我有一个这样的数据框:

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/

10-12 21:04