聚合Pandas DataFrames列的集合

时间:2016-06-27 17:46:07

标签: python pandas dataframe

我有一个带有一些独立列的pandas DataFrame,我正在寻找一种有效的方法来展开/聚合它们。

所以,让我们说我有桌子:

+-----+-----+-------+------+-------+
| One | Two | Three | Four | Count |
+-----+-----+-------+------+-------+
| a   | x   | y     | y    | 3     |
+-----+-----+-------+------+-------+
| b   | z   | x     | x    | 5     |
+-----+-----+-------+------+-------+
| c   | y   | x     | y    | 1     |
+-----+-----+-------+------+-------+

第二行,第三行和第四行是独立的。

我想结束这张桌子:

+-----+-------+-------+
| One | Other | Count |
+-----+-------+-------+
| a   | x     | 3     |
+-----+-------+-------+
| a   | y     | 6     |
+-----+-------+-------+
| b   | x     | 10    |
+-----+-------+-------+
| b   | z     | 5     |
+-----+-------+-------+
| c   | x     | 1     |
+-----+-------+-------+
| c   | y     | 2     |
+-----+-------+-------+

如何才能实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用melt中的pandas功能将数据框从宽格式转换为长格式,然后分组为OneOther列以及sum Count列:

import pandas as pd
pd.melt(df, id_vars = ['One', 'Count'], value_name = 'Other').groupby(['One', 'Other'])['Count'].sum().reset_index()

  One Other Count
0   a   x   3
1   a   y   6
2   b   x   10
3   b   z   5
4   c   x   1
5   c   y   2