这个问题是重复的,从某种意义上说,我想here。
所以,基本上我有以下df:
Time | A | B|
1 |10 | 20|
2 |15 | 25|
我想要:
Name | 1 | 2|
A |10 | 15|
B |20 | 25|
因此,首先,我尝试了以下问题的可接受解决方案:df = df.set_index('Time').T.rename_axis('Name').rename_axis(None, 1)
,但这给了我rename_axis() takes from 1 to 2 positional arguments but 3 were given
。如果我仅尝试df.set_index('Time').T.rename_axis('Name')
,则df变为:
Time | 1 | 2|
Name
A |10 | 15|
B |20 | 25|
即使如此,如果我用df.columns[0]
打印第一列的名称,我也会得到1
,而Time
和Name
都不会。我希望第一列为Name
。
如何以这种方式转置我的df?希望这个问题很清楚!
谢谢
答案 0 :(得分:2)
您必须指定axis=1
而不是1
(我认为最新版本的功能已更改),并添加DataFrame.reset_index
以便将索引转换为列:
df = df.set_index('Time').T.rename_axis('Name').rename_axis(None, axis=1).reset_index()
print (df)
Name 1 2
0 A 10 15
1 B 20 25
或者在最新的熊猫版本中,使用参数index
和columns
:
df = df.set_index('Time').T.rename_axis(index='Name', columns=None).reset_index()