我想在不使用任何循环的情况下融化数据帧。假设我有一个看起来像这样的数据帧:
df = pd.DataFrame({'var1': [1,2,3,4,5]*100,
'var2': [1,2,3,4,5]*100,
'col1': ['a','b']*250,
'col2': ['c','d']*250,})
var1 var2 col1 col2
0 1 1 a c
1 2 2 b d
2 3 3 a c
3 4 4 b d
4 5 5 a c
.. ... ... ... ...
495 1 1 b d
496 2 2 a c
497 3 3 b d
498 4 4 a c
499 5 5 b d
现在我想融化数据:
df.melt(value_vars=['var1', 'var2'], var_name='var', id_vars=['col1', 'col2'])
col1 col2 var value
0 a c var1 1
1 b d var1 2
2 a c var1 3
3 b d var1 4
4 a c var1 5
.. ... ... ... ...
995 b d var2 1
996 a c var2 2
997 b d var2 3
998 a c var2 4
999 b d var2 5
是否可以在不使用任何循环的情况下将数据融合到一个具有id_变量的列?所以它最终看起来像这样:
col var value
0 a var1 1
1 b var1 2
2 a var1 3
3 b var1 4
4 a var1 5
5 c var2 1
6 d var2 2
7 c var2 3
8 d var2 4
9 c var2 5
.. .. .... ..
使用^{} ,它会在
var, col
列之后按编号创建新列,因此如果需要,可以添加var
字符串:使用
melt
可能的位黑客解决方案:相关问题 更多 >
编程相关推荐