我得到了以下数据帧
df = pd.DataFrame({'ISIN': ['A', 'B', 'C'],
'Jan': [40000, 50000, 42000],
'Feb': [40000, 50000, 42000],
'Mar': [40000, 50000, 42000]})
哪个产生
ISIN Jan Feb Mar
0 A 40000 50000 42000
1 B 40000 50000 42000
2 C 40000 50000 42000
我正在尝试生成一个数据如下所示的输出:
Date A B C
0 Jan 40000 40000 40000
1 Feb 50000 50000 50000
2 Mar 42000 42000 42000
我的第一步是使用简单地转换分析
df = df.T
除了ISIN行(即我想要的列标题(仍在数据集中之外,这种方法还是有效的:
0 1 2
ISIN A B C
Jan 40000 40000 40000
Feb 50000 50000 50000
Mar 42000 42000 42000
然后我试着在做转座之前弹出ISIN行,即
ISIN=df.pop("SIN"(df=df。T
这去掉了ISIN行,但当我尝试插入弹出的列(使用df.insert(并更改轴时。。。我被卡住了
我也尝试过使用df.melt,但我很难在正确的地方找到正确的东西
我相信这很容易,但我会在这里兜圈子,我真的很感激一些智慧。
谢谢!
转置DataFrame时,还交换索引和列。所以你必须明确设置索引:
df = df.set_index('ISIN').T.reset_index()
你会得到:
ISIN index A B C
0 Jan 40000 50000 42000
1 Feb 40000 50000 42000
2 Mar 40000 50000 42000
值是正确的,但标签是关闭的。你可以用rename_axis
:修复它们
df = df.set_index('ISIN').T.rename_axis('Date').reset_index().rename_axis(None, axis=1)
如预期:
Date A B C
0 Jan 40000 50000 42000
1 Feb 40000 50000 42000
2 Mar 40000 50000 42000
转置时,索引变为列,列变为索引,因此需要首先将ISIN设置为索引,然后进行转置。
import pandas as pd
df = pd.DataFrame({'ISIN': ['A', 'B', 'C'],
'Jan': [40000, 50000, 42000],
'Feb': [40000, 50000, 42000],
'Mar': [40000, 50000, 42000]})
df.set_index('ISIN', inplace=True)
print(df.T)
哪个生产:
ISIN A B C
Jan 40000 50000 42000
Feb 40000 50000 42000
Mar 40000 50000 42000
您可以尝试:
df.rename(columns={'ISIN': 'Date'}).set_index('Date').T
结果:
Date A B C
Jan 40000 50000 42000
Feb 40000 50000 42000
Mar 40000 50000 42000