在pandas中将多行连接到一行

2024-04-23 07:02:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据(这只是一小部分,实际数据有21行):

    wt_tmin    wt_tmax   wt_prec  wt_sol_rad     wt_ET   
0  33.142857  52.714286  0.031429  114.000000  0.102857    
1  40.142857  66.857143  0.280000  172.714286  0.192857
2  41.714286  67.142857  0.001429  179.714286  0.191429         

我要将所有行连接到一行,如下所示:

0            1          2          3           4       5         6             7       8        9          11        12          13       14         15        
33.142857  52.714286  0.031429  114.000000  0.102857 40.142857  66.857143  0.280000  172.714286  0.192857 41.714286  67.142857  0.001429  179.714286  0.191429

我试着这样做:

 # K is a pandas dataframe with the  data
 KE = pd.concat([K.icol(0), K.icol(1), K.icol(2), K.icol(3), K.icol(4)], axis=1).T

但这并没有给我想要的结果。请帮忙


Tags: the数据dataframepandasdataiswithet
3条回答

我会通过values下拉到numpy,将其放在一行,然后从中创建一个新帧:

>>> pd.DataFrame(df.values.reshape(1, -1))
          0          1         2    3         4          5          6     7   \
0  33.142857  52.714286  0.031429  114  0.102857  40.142857  66.857143  0.28   

           8         9          10         11        12          13        14  
0  172.714286  0.192857  41.714286  67.142857  0.001429  179.714286  0.191429  

.reshape(1, -1)基本上是指“根据需要重塑为1行和尽可能多的列(-1)”。

df = df.stack().to_frame().T
df.columns = list(range(len(df.columns)))

或者

df = pd.DataFrame(df.stack().to_frame().values).T

会给你:

          0          1         2    3         4          5          6     7   \
0  33.142857  52.714286  0.031429  114  0.102857  40.142857  66.857143  0.28   

           8         9          10         11        12          13        14  
0  172.714286  0.192857  41.714286  67.142857  0.001429  179.714286  0.191429  

您可以使用pandas^{}然后就不需要为此调用pd.DataFrame

In [1470]: pd.melt(df, var_name='var', value_name='0').drop('var', axis=1).T
Out[1470]: 
          0          1          2          3          4          5         6   \
0  33.142857  40.142857  41.714286  52.714286  66.857143  67.142857  0.031429   

     7         8    9           10          11        12        13        14  
0  0.28  0.001429  114  172.714286  179.714286  0.102857  0.192857  0.191429 

相关问题 更多 >