Python 循环通过df并创建新的df

Python 循环通过df并创建新的df,python,pandas,Python,Pandas,我有一组数据,看起来像: data = pd.DataFrame([['A',1],['B',4,5],['C',7,8,9]],columns =['Key','Oct','Nov','Dec']) Key | Oct | Nov | Dec A | 1 | | B | 4 | 5 | C | 7 | 8 | 9 我试图将其转换为一个数据集,以便每次出现一个值时,它都会将键、列标题和值添加到一个新的数据帧中,如下所示: Key | Month | A

我有一组数据,看起来像:

data = pd.DataFrame([['A',1],['B',4,5],['C',7,8,9]],columns =['Key','Oct','Nov','Dec'])

Key | Oct | Nov | Dec
A   | 1   |     |
B   | 4   | 5   |
C   | 7   | 8   | 9
我试图将其转换为一个数据集,以便每次出现一个值时,它都会将键、列标题和值添加到一个新的数据帧中,如下所示:

Key | Month | Amt
A   | Oct   | 1
B   | Oct   | 4
B   | Nov   | 5
C   | Oct   | 7
C   | Nov   | 8
C   | Dec   | 9
我和熊猫一起工作,所以我认为使用iterrows来循环df是可行的,但它并没有给出我最终想要的东西。仅供参考,实际文件有20列和500行,但列和行都是动态的,这取决于一天的活动,因此,如果可能的话,我正在寻找一种不需要显式定义列标题的解决方案

谢谢

您可以使用+并重命名列:

import pandas as pd

data = pd.DataFrame([['A', 1], ['B', 4, 5], ['C', 7, 8, 9]], columns=['Key', 'Oct', 'Nov', 'Dec'])

result = data.set_index('Key').stack().reset_index()
result.columns = ['Key', 'Month', 'Amt']  # renames the columns

print(result)
输出

  Key Month  Amt
0   A   Oct  1.0
1   B   Oct  4.0
2   B   Nov  5.0
3   C   Oct  7.0
4   C   Nov  8.0
5   C   Dec  9.0