如何在pandas groupby中包含过零项?

时间:2015-05-05 20:52:12

标签: python csv pandas

如何将pandas groupby结果 - 包括零交叉词 - 输出到csv文件。

我正在寻找的玩具示例:

我有一个pandas数据框,可以近似为:

df = pd.DataFrame(np.random.choice(['A', 'B', 'C'], (10, 2)), 
                  columns=['one', 'two'])

这给了我以下内容:

   one  two
0   C   C
1   C   A
2   A   B
3   B   A
4   B   C
5   B   B
6   C   C
7   A   C
8   C   B
9   C   C

当我运行groupby时,它按预期工作:

grouped = df.groupby(['one', 'two']).size()
grouped

one  two
A    B      1
     C      1
B    A      1
     B      1
     C      1
C    A      1
     B      1
     C      3
dtype: int64

但是,我希望包含“A A 0”术语,因为我将其写入csv文件:

grouped.to_csv("test1.csv", header=True)

!cat test1.csv

one,two,0
A,B,1
A,C,1
B,A,1
B,B,1
B,C,1
C,A,1
C,B,1
C,C,3

我希望该文件包含以下行:A,A,0

1 个答案:

答案 0 :(得分:4)

你可以用unstack做到这一点:

grouped.unstack('two').fillna(0).stack()

例如,它给出了以下输出:

one  two
A    A      2
     B      1
     C      1
B    A      0
     B      1
     C      3
C    A      2
     B      0
     C      0