我有一个这样的数据框:
name_by_day name a b
-------------------------------
20170901 2017090101 118 241
20170901 2017090102 117 241
20170901 2017090103 88 241
20170901 2017090104 99 241
20170901 2017090105 87 241
我只想知道:
name_by_day a_x b_x a_y b_y a_z b_z ...
---------------------------------------------------
20170901 118 241 117 241 88 241 99 241 87 241
有什么想法吗?
最佳答案
您可以使用stack
,然后使用cumcount
创建可以表示您的x、y、z的唯一键。。
s=df.set_index('name_by_day')[['a','b']].stack().to_frame('Value')
s['New']=s.groupby(level=[0,1]).cumcount().astype(str)
s=s.set_index(s['New'],append=True).Value.unstack([1,2])
s.columns=s.columns.map('{0[0]}_{0[1]}'.format)
s
Out[1077]:
a_0 b_0 a_1 b_1 a_2 b_2 a_3 b_3 a_4 b_4
name_by_day
20170901 118 241 117 241 88 241 99 241 87 241
关于python - Pandas -如何正确转置列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49904694/