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