Python 转置数据帧问题:对于每个df.index和df.column组合,在新数据帧中创建一行
我有一个如下所示的数据框: 我的数据框的索引是“日期”列 我想创建一个新的数据框,这样对于每个日期和公司名称组合,数据框中将有一行 生成的数据帧如下所示: 日期公司名称值Python 转置数据帧问题:对于每个df.index和df.column组合,在新数据帧中创建一行,python,pandas,dataframe,pivot,data-transform,Python,Pandas,Dataframe,Pivot,Data Transform,我有一个如下所示的数据框: 我的数据框的索引是“日期”列 我想创建一个新的数据框,这样对于每个日期和公司名称组合,数据框中将有一行 生成的数据帧如下所示: 日期公司名称值 如何使用python pandas操作实现此转换?您可以使用pandas中的pd.melt并重塑数据集。假设您的数据帧被称为df,请使用以下命令: import pandas as pd df_reshaped = pd.melt(df,id_vars='Dates 3M') 这将给你: df_reshaped Ou
如何使用python pandas操作实现此转换?您可以使用
pandas
中的pd.melt
并重塑数据集。假设您的数据帧被称为df
,请使用以下命令:
import pandas as pd
df_reshaped = pd.melt(df,id_vars='Dates 3M')
这将给你:
df_reshaped
Out[13]:
Dates 3M variable value
0 2020-01-01 INDIA LTD 1.739
1 2020-02-01 INDIA LTD -1.111
2 2020-03-01 INDIA LTD -0.863
3 2020-06-01 INDIA LTD -2.136
4 2020-07-01 INDIA LTD 1.692
5 2020-01-01 ALKYL AMINES CHEMICALS -0.655
6 2020-02-01 ALKYL AMINES CHEMICALS 3.668744 1.371749
7 2020-03-01 ALKYL AMINES CHEMICALS 0.008598 2.543608
8 2020-06-01 ALKYL AMINES CHEMICALS -4.154
9 2020-07-01 ALKYL AMINES CHEMICALS 8.431578 -1.116379
10 2020-01-01 LTD AAVAS -0.536
11 2020-02-01 LTD AAVAS 1.347
12 2020-03-01 LTD AAVAS 2.104
13 2020-06-01 LTD AAVAS -2.644
14 2020-07-01 LTD AAVAS 0.674
15 2020-01-01 FINANCIERS LTD ABB INDIA LTD ADITYA BIRLA... -1.837524 0.514004 -0.853701 -0.101420 ...
16 2020-02-01 FINANCIERS LTD ABB INDIA LTD ADITYA BIRLA... 4.367026 2.930212 3.540222 4.080081 ...
17 2020-03-01 FINANCIERS LTD ABB INDIA LTD ADITYA BIRLA... 0.795136 -0.290943 -0.726246 -1.021898 ...
18 2020-06-01 FINANCIERS LTD ABB INDIA LTD ADITYA BIRLA... -4.166667 -2.250709 -1.815881 -2.933202 ...
19 2020-07-01 FINANCIERS LTD ABB INDIA LTD ADITYA BIRLA... 0.097800 -3.166751 0.677638 -1.873767 ...
请注意,您可以通过向上述代码中添加以下内容来重命名新创建的列:
df_reshaped = pd.melt(df,id_vars='Dates 3M',var_name = "newname1", value_name = "newname2")
或
df_reshaped = pd.melt(df,id_vars='Dates 3M',var_name = "newname1", value_name = "newname2")
df = df.set_index('Dates').stack().reset_index()
df.columns = ['Dates','Company Name','Value']
df.sort_values(by=['Company Name', 'Dates'])
pd.melt(df,
id_vars=['Dates'],
value_vars=[x for x in df.columns if x!='Dates'],
var_name='Company Name',
value_name='Values')