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