我有一个如下所示的数据框:
ID | Value
1 100
1 300
2 200
3 300
4 400
基本上我正在努力实现这个目标:
ID Distinct Count | Total Value
4 1300
所以你看到ID的总不同计数是4而不是5,因为1重复两次。
我在python中做到了这一点:
df = df.aggregate({'Id':lambda x: x.nunique(), 'value': 'sum'});
但这给了我'DataFrame'对象没有属性'aggregate'
我做错了什么?
PS:我也做了但是它也不起作用答案 0 :(得分:1)
您使用旧版本的pandas,因为df.agg
/aggregate
是v0.20
的第一类函数。使用pip install --upgrade pandas
升级。
(v0.20+
回答)如果您使用此功能,则可以删除lambda
。
df.agg({'ID' : 'nunique', 'Value' : 'sum'}).to_frame().T
ID Value
0 4 1300
答案 1 :(得分:1)
您可以使用apply
:
df = df.apply({'ID':'nunique', 'Value': 'sum'}).to_frame().T
print (df)
Value ID
0 1300 4
如果使用较旧版本的熊猫:
df = pd.DataFrame([[df['ID'].nunique(), df['Value'].sum()]],
columns=['ID Distinct Count','Total Value'])
print (df)
ID Distinct Count Total Value
0 4 1300