Python 按不同于X的索引值分组
我有以下数据帧Python 按不同于X的索引值分组,python,pandas,group-by,Python,Pandas,Group By,我有以下数据帧 balance id currency 3 1WO 1.732174 ADH 7.734906 ALX 3.854667 AMLT 4.308590 ANCT 1.259457 ...
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
... ...
646902 BTC 2.000000
ETH 1.495225
676329 BCH 0.000000
BTC 0.000000
ETH 3.022524
我想按id
而不是3和货币
对余额进行分组并求和。
此外,收集多个id的新分组id将被称为29。
我可以执行以下操作,但它忽略了收集不在3
中的索引数据并对其重命名的附加条件:
groupby(['currency','app_vendor_id']).sum()
如有任何贡献,将不胜感激
编辑:
预期产出:
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
... ...
29 BTC 2.000000
ETH 4.517869
首先使用
rename
,在第一级中不使用3
的所有值:
ids = df.index.levels[0]
d = dict.fromkeys(ids[ids != 3], 29)
df1 = df.rename(d, level=0)
print (df1)
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
29 BTC 2.000000
ETH 1.495225
BCH 0.000000
BTC 0.000000
ETH 3.022524
然后使用sum
:
print (df1.sum(level=0))
balance
id
3 18.889794
29 6.517749
print (df1.sum(level=1))
balance
currency
1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
BTC 2.000000
ETH 4.517749
BCH 0.000000
print (df1.sum(level=[0,1]))
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
29 BTC 2.000000
ETH 4.517749
BCH 0.000000
首先使用
rename
,在第一级中不使用3
的所有值:
ids = df.index.levels[0]
d = dict.fromkeys(ids[ids != 3], 29)
df1 = df.rename(d, level=0)
print (df1)
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
29 BTC 2.000000
ETH 1.495225
BCH 0.000000
BTC 0.000000
ETH 3.022524
然后使用sum
:
print (df1.sum(level=0))
balance
id
3 18.889794
29 6.517749
print (df1.sum(level=1))
balance
currency
1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
BTC 2.000000
ETH 4.517749
BCH 0.000000
print (df1.sum(level=[0,1]))
balance
id currency
3 1WO 1.732174
ADH 7.734906
ALX 3.854667
AMLT 4.308590
ANCT 1.259457
29 BTC 2.000000
ETH 4.517749
BCH 0.000000
我真的不明白你的意思。所以你想要所有ID,除了3和groupby货币?你能从样本数据中添加预期的输出吗?我已经更新了,以显示我不太明白你的意思。那么您想要所有ID(除3和groupby货币外)吗?您可以添加示例数据的预期输出吗?我已经更新以显示我想要的