熊猫:使用零值创建缺失的组合行

Pau*_*349 2 python pandas

假设我有一个数据框df:

df = pd.DataFrame({'col1': [1,1,2,2,2], 'col2': ['A','B','A','B','C'], 'value': [2,4,6,8,10]})

    col1 col2 value
0   1    A    2
1   1    B    4
2   2    A    6
3   2    B    8
4   2    C    10
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方式来之间的可能的组合创建任何缺少的行col1,并col2与退出值,并填写以零缺失的行

理想的结果将是:

    col1 col2 value
0   1    A    2
1   1    B    4
2   2    A    6
3   2    B    8
4   2    C    10
5   1    C    0    <- Missing the "1-C" combination, so create it w/ value = 0
Run Code Online (Sandbox Code Playgroud)

我已经研究了使用stackunstack使其工作,但是我不确定这正是我所需要的。

提前致谢

WeN*_*Ben 5

使用pivot,然后stack

df.pivot(*df.columns).fillna(0).stack().to_frame('values').reset_index()
Out[564]: 
   col1 col2  values
0     1    A     2.0
1     1    B     4.0
2     1    C     0.0
3     2    A     6.0
4     2    B     8.0
5     2    C    10.0
Run Code Online (Sandbox Code Playgroud)


And*_* L. 4

unstack另一种与fill_value=0and一起使用的方法stackreset_index

df.set_index(['col1','col2']).unstack(fill_value=0).stack().reset_index()

Out[311]:
   col1 col2  value
0     1    A      2
1     1    B      4
2     1    C      0
3     2    A      6
4     2    B      8
5     2    C     10
Run Code Online (Sandbox Code Playgroud)