【发布时间】:2017-03-16 18:37:30
【问题描述】:
我的问题是关于 pandas 的 groupby 操作。我有以下数据框:
In [4]: df = pd.DataFrame({"A": range(4), "B": ["PO", "PO", "PA", "PA"], "C": ["Est", "Est", "West", "West"]})
In [5]: df
Out[5]:
A B C
0 0 PO Est
1 1 PO Est
2 2 PA West
3 3 PA West
这就是我想做的:我想按 B 列分组并对 A 列求和。但最后,我希望 C 列仍然在 DataFrame 中。如果我这样做:
In [8]: df.groupby(by="B").aggregate(pd.np.sum)
Out[8]:
A
B
PA 5
PO 1
它完成了这项工作,但缺少 C 列。我也可以这样做:
In [9]: df.groupby(by=["B", "C"]).aggregate(pd.np.sum)
Out[9]:
A
B C
PA West 5
PO Est 1
或
In [11]: df.groupby(by=["B", "C"], as_index=False).aggregate(pd.np.sum)
Out[11]:
B C A
0 PA West 5
1 PO Est 1
但在这两种情况下,它都按 B AND C 而不仅仅是 B 分组并保留 C 值。我想做的事无关紧要还是有办法?
【问题讨论】:
标签: python pandas dataframe group-by