遍历df并创建新的df

时间:2019-10-07 19:36:04

标签: 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,列标题和值添加到新的数据框中,如下所示:

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行,但是列和行都是动态的,具体取决于当天的活动,因此,我正在寻找一种解决方案,如果可能的话,该方法不需要明确定义列标题。 / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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