我有一个看起来像这样的Dataframe:
Deal Year Quarter_1 Quarter_2 Quarter_3 Financial_Data
h 1 1991 1 2 3 120
i 2 1992 4 5 6 80
j 3 1993 7 8 9 100
我想将所有季度合并为一个新列,并复制交易编号,年份和财务数据.最终结果应如下所示:
Deal Year Quarter Financial_Data
h 1 1991 1 120
i 1 1991 2 120
j 1 1991 3 120
k 2 1992 4 80
l 2 1992 5 80
m 2 1992 6 80
n 3 1993 7 100
o 3 1993 8 100
p 3 1993 9 100
最佳答案 你可以使用融化方法.
df = pd.melt(d, id_vars=["Deal", "Year", "Financial_Data"],
value_name="Quarter").drop(['variable'],axis=1).sort_values('Quarter')
产量
Deal Year Financial_Data Quarter
0 1 1991 120 1
3 1 1991 120 2
6 1 1991 120 3
1 2 1992 80 4
4 2 1992 80 5
7 2 1992 80 6
2 3 1993 100 7
5 3 1993 100 8
8 3 1993 100 9
如果您有许多列,则可以使用df.columns.tolist()方法来满足您的要求.
id_vars_list = df.columns.tolist()
id_vars_list = id_vars_list[:2] + id_vars_list[-1]
声明将成为
df = pd.melt(d, id_vars=id_vars_list,
value_name="Quarter").drop(['variable'],axis=1).sort_values('Quarter')