假设我有一个数据框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)
我已经研究了使用stack并unstack使其工作,但是我不确定这正是我所需要的。
提前致谢
使用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)
unstack另一种与fill_value=0and一起使用的方法stack,reset_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)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |