假设我有数据框:
x1 x2 value_x1 value_x2
a b 1 2
a c 3 4
b c 5 6
我可以获得以下数据框吗?
a b c
1 2 0
3 0 4
0 5 6
我尝试了pivot_table并融化,但结果不合适。
谢谢。
答案 0 :(得分:2)
使用wide_to_long
:
df = pd.wide_to_long(df.reset_index(), stubnames=['x', 'value_x'], i='index', j='a')
print (df)
x value_x
index a
0 1 a 1
1 1 a 3
2 1 b 5
0 2 b 2
1 2 c 4
2 2 c 6
然后unstack
进行一些数据清理:
df = (df.reset_index(level=1, drop=True)
.set_index('x', append=True)['value_x']
.unstack(fill_value=0)
.rename_axis(None)
.rename_axis(None, axis=1))
print (df)
a b c
0 1 2 0
1 3 0 4
2 0 5 6