在pandas中转换数据框

时间:2018-06-07 07:36:35

标签: python pandas

假设我有数据框:

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并融化,但结果不合适。

谢谢。

1 个答案:

答案 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