1
我有兩隻大熊貓DataFrames: 一個包含客戶號碼的匿名散列(這裏簡單的數字0-19的哈希值)大熊貓合併一個數據幀和一系列
import pandas as pd
import numpy as np
from hashlib import sha1
df_customers = pd.DataFrame([ sha1(i).hexdigest() for i in np.arange(20)])
df_customers.columns = ["customer"]
現在我有一個第二表(數據幀)與200個發生客戶從選擇的20種不同的水果採摘:
fruit = ["apple", "banana", "peach", "plum", "orange", "cumquat", "raspberry", "lemon", "rubarb", "pineapple"]
pd.DataFrame(np.c_[ np.array([ sha1(i).hexdigest() for i in np.random.randint(0,20,200) ]),
np.array([ fruit[i] for i in np.random.randint(0,len(fruit),200) ]) ],
columns=("customer_id","fruit")
)
現在我想將列添加到客戶數據幀是指定的各種食用水果的 - 這是哈哈的不同水果的數量每位顧客都被吃掉了。爲此我做了:
variety = df_eating.groupby("customer_id")["fruit"].apply(lambda x: len(np.unique(x)))
這給了我一個「系列」。現在,我覺得應該是添加這回df_customer一個直接的方式,尊重CUSTOMER_ID但在這裏我很卡:
pd_customer["variety"] = variety
不尊重客戶ID,並給出NaN的每一個值
和功能如pd.merge()
其中有一個選項合併「開」的東西沒有做我想要的東西。
我用numpy做了很多,但我是熊貓新手,所以任何commen關於如何提高我的代碼以上也非常受歡迎 – Magellan88