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')