我有一组看起来像这样的数据:
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>
谢谢!
答案 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