传输数据帧中除第一列外的所有列



我得到了以下数据帧

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

最新更新