处理熊猫查询中的重复项

时间:2021-02-17 10:04:09

标签: python-3.x pandas

我有以下数据帧:

data = {'Customer_ID': ['123','2','1010','123'],
    'Date_Create': ['12/08/2010','04/10/1998','27/05/2010','12/08/2010'],
    'Purchase':[1,1,0,1]
    }

df = pd.DataFrame(data, columns = ['Customer_ID', 'Date_Create','Purchase'])

我想执行这个查询:

df_2 = df[['Customer_ID','Date_Create','Purchase']].groupby(['Customer_ID'], 
as_index=False).sum().sort_values(by='Purchase', ascending=False)

此查询的目标是对所有购买(布尔字段)求和,并输出一个包含 3 列的数据框:'Customer_ID', 'Date_Create','Purchase

问题是:字段 Date_Create 不在查询中,因为它有重复,因为帐户的 date_creation 没有改变。

我该如何解决?

谢谢

2 个答案:

答案 0 :(得分:1)

如果每个 groupby 的值相同,您可以将列 Customer_ID 添加到 (df.groupby(['Customer_ID','Date_Create'], as_index=False)['Purchase'] .sum() .sort_values(by='Purchase', ascending=False))

date

如果没有,请使用一些聚合函数 - 例如GroupBy.first 用于每组的前 (df.groupby('Customer_ID') .agg(Purchase = ('Purchase', 'sum'), Date_Create= ('Date_Create', 'first')) .reset_index() .sort_values(by='Purchase', ascending=False))

{{1}}

答案 1 :(得分:1)

如果我理解正确并且您的源数据有一些重复,

有一个专门用于此的函数,dataframe.drop_duplicates()

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

要仅考虑重复检查中的某些列,请使用 subset

df2 = df.drop_duplicates(subset=['Customer_ID','Date_Create'])