Python 数据帧中的数据转置

Python 数据帧中的数据转置,python,pandas,dataframe,linear-regression,transpose,Python,Pandas,Dataframe,Linear Regression,Transpose,我有一个大数据框7 GB csv,通过pandas.read_csv加载,结构如下: In [1]: df Out[1]: ID Month Transaction_Amount 1 2014/01 10 1 2014/02 20 1 2014/03 10 1 2014/04 20 1

我有一个大数据框7 GB csv,通过pandas.read_csv加载,结构如下:

In [1]: df
Out[1]: 

ID            Month           Transaction_Amount

1             2014/01         10
1             2014/02         20
1             2014/03         10
1             2014/04         20
1             2014/05         10
1             2014/06         20
1             2014/07         10
1             2014/08         20
1             2014/09         10
1             2014/10         20
1             2014/11         10
1             2014/12         20
2             2014/01         15
2             2014/02         25
2             2014/03         15
2             2014/04         25
...
10000000      2014/11         13
10000000      2014/12         23
In [2]: my_new_transposed_df
Out[2]:

ID          01      02      03      04   ...    11      12      

1           10      20      10      20          10      20
2           15      25      15      25   ...    15      25
...
10000000    13      23      13      23   ...    13      23
我想在12个月的数据中对每个ID进行线性回归。最终目标是获得每个线性回归的斜率值,并将该值与ID关联。我的第一个想法是,要执行此回归,我应该创建一个具有以下结构的新数据框:

In [1]: df
Out[1]: 

ID            Month           Transaction_Amount

1             2014/01         10
1             2014/02         20
1             2014/03         10
1             2014/04         20
1             2014/05         10
1             2014/06         20
1             2014/07         10
1             2014/08         20
1             2014/09         10
1             2014/10         20
1             2014/11         10
1             2014/12         20
2             2014/01         15
2             2014/02         25
2             2014/03         15
2             2014/04         25
...
10000000      2014/11         13
10000000      2014/12         23
In [2]: my_new_transposed_df
Out[2]:

ID          01      02      03      04   ...    11      12      

1           10      20      10      20          10      20
2           15      25      15      25   ...    15      25
...
10000000    13      23      13      23   ...    13      23
此时,我将在每条直线上执行回归,并记录斜率:

In [1]: my_new_transposed_df['linear_reg_slope'] = my_new_transposed_df.perform_linear_regression(rows=(1:12))

然而,我在完成这两个步骤时遇到了困难,我想第一个步骤是转换?第二个是执行回归

您应该使用groupby将数据分组到多个数据帧中,每个ID对应一个数据帧,然后对每个数据帧进行回归。退房,你能详细说明一下吗?我将groupby与sum结合使用,对多行数据求和,但不执行换位。我的意思是,您不想执行换位。您只需要对数据进行分组,并对每个组执行操作。您可以执行df.groupby'ID'['Transaction Amount'].applymyFunction,其中myFunction是一个函数,它获取一系列事务数据,并进行回归,返回斜率或任何您想要的其他数据。实际上,你不需要创建巨大的转置数据帧,只需要对每个ID分别进行回归。您可以执行类似df.set_index['ID','Month']的操作。取消堆栈。但是,正如BrenBarn所说,如果不需要创建额外的DF,最好不要创建。我正在研究使用sklearn.linear_model.LinearRegression模块,但不确定BrenBarn建议在apply函数中使用LinearRegression的语法。