假设我具有以下数据框:
import pandas as pd
df = pd.DataFrame()
df['ID'] = 1, 1, 1, 2, 2, 3, 3
df['a'] = 3, 5, 6, 3, 8, 1, 2
我想创建一个for循环,该循环遍历ID,并为该ID返回“ a”的总和。到目前为止,我有这个:
for i in df['ID']:
print(i, df.loc[df['ID'] == i, 'a'].sum())
但是这将返回相同值的倍数,如下所示:
1 14
1 14
1 14
2 11
2 11
3 3
3 3
如何编辑我的池,以便一旦池返回'id'== 1的值,它将移至下一个ID值,而不是仅移至下一行?
我正在寻找以下内容:
1 14
2 11
3 3
谢谢!
答案 0 :(得分:1)
这比循环(与许多熊猫数据框问题一样)更适合var thingy = this.getValue();
getValue(){
return document.getElementById("item").value;
}
:
groupby
但是,只是为了解释循环出错的地方,您可以循环遍历>>> df.groupby('ID')['a'].sum()
ID
1 14
2 11
3 3
Name: a, dtype: int64
的唯一值,而不是遍历所有行:
df['ID']