Eli*_* K. 6 python dataframe pandas
我有一个看起来像这样的数据框:
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
Run Code Online (Sandbox Code Playgroud)
我想将所有季度合并到一个新列中并复制交易编号、年份和财务数据。最终结果应如下所示:
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
Run Code Online (Sandbox Code Playgroud)
您可以使用melt方法。
df = pd.melt(d, id_vars=["Deal", "Year", "Financial_Data"],
value_name="Quarter").drop(['variable'],axis=1).sort_values('Quarter')
Run Code Online (Sandbox Code Playgroud)
输出
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
Run Code Online (Sandbox Code Playgroud)
如果您有很多列,则可以使用df.columns.tolist()方法来实现您的要求。
column_list = df.columns.tolist()
id_vars_list = column_list[:2] + column_list[-1:]
Run Code Online (Sandbox Code Playgroud)
该声明将成为
df = pd.melt(d, id_vars=id_vars_list,
value_name="Quarter").drop(['variable'],axis=1).sort_values('Quarter')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5254 次 |
| 最近记录: |