数据帧组合列表

2024-04-25 23:23:16 发布

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

dfs\u list是一个庞大的数据帧列表。例如,下面是列表中的三个数据帧:

[2501 rows x 2 columns],       ABCD TEST  ABCD TRIAL
Time                                           
0.000             NaN                  1.048793
0.002             NaN                  1.048793
0.004             NaN                  1.017976
0.006             NaN                  1.059065
0.008             NaN                  1.038521
...               ...                       ...
4.992             NaN                  0.997432
4.994             NaN                  1.007704
4.996             NaN                  1.007704
4.998             NaN                  0.987160
5.000             NaN                  0.001027

[2501 rows x 2 columns],        ABC TEST  ABC TRIAL
Time                                            
0.000          0.73632                  1.039654
0.002          0.76128                  1.021422
0.004          0.82368                  0.984959
0.006          0.74880                  1.021422
0.008          0.71136                  1.048769
...                ...                       ...
4.992          0.72384                  1.012306
4.994          0.71136                  1.030538
4.996          0.76128                  0.984959
4.998          0.69888                  1.021422
5.000          0.03744                 -0.008660

[2501 rows x 2 columns]]
[      ABDCE TEST  ABCDE TRIAL
Time                                           
0.000             NaN                  1.065354
0.002             NaN                  1.065354
0.004             NaN                  1.048597
0.006             NaN                  1.048597
0.008             NaN                  1.065354
...               ...                       ...
4.992             NaN                  0.989946
4.994             NaN                  1.006703
4.996             NaN                  1.006703
4.998             NaN                  1.006703
5.000             NaN                  0.001257

我想合并数据帧列表以获得如下输出:

                ABCD TEST     ABCD TRIAL    ABC TEST    ABC TRIAL   ABDCE TEST   ABCDE TRIAL

    Time                                           
    0.000       NaN        1.048793        0.73632        1.039654         NaN      1.065354
    0.002       NaN        1.048793        0.76128        1.021422         NaN      1.065354
    0.004       NaN        1.017976        0.82368        0.984959         NaN      1.048597
    0.006       NaN        1.059065        0.74880        1.021422         NaN      1.048597
    0.008       NaN        1.038521        0.71136        1.048769         NaN      1.065354
    ...         ...             ...            ...             ...         ...           ...
    4.992       NaN        0.997432        0.72384        1.012306         NaN      0.989946
    4.994       NaN        1.007704        0.71136        1.030538         NaN      1.006703
    4.996       NaN        1.007704        0.76128        0.984959         NaN      1.006703
    4.998       NaN        0.987160        0.69888        1.021422         NaN      1.006703
    5.000       NaN        0.001027        0.03744       -0.008660         NaN      0.001257

所有的数据帧都是2501行x 2列,并且以'Time'作为索引。所有数据帧的所有“时间”索引值都完全相同。你知道吗

当我这样做时:

pd.concat(dfs_list, axis=1)

输出是一个具有许多Nan值的数据帧。你知道吗

我得到的最接近的是使用以下代码:

reduce(lambda left, right: pd.merge(left, right, left_index=True, right_index=True), dfs_list)

这将正确地组合dfs\u列表中的所有数据帧,但只输出第一行(Time=0.0)。你知道吗

如果我使用ignore\ U index,要处理注释,数据帧结果是:

       0         1    2         3        4    ...       383      384       385  386       387
Time                                          ...                                            
0.000  NaN  1.065354  NaN  1.048793  0.73632  ...  1.010290  0.64896  0.803985  NaN  0.665822
0.002  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
0.002  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
0.002  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
0.002  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
...    ...       ...  ...       ...      ...  ...       ...      ...       ...  ...       ...
4.998  NaN       NaN  NaN       NaN      NaN  ...       NaN  0.66144  0.934120  NaN       NaN
4.998  NaN  1.006703  NaN  0.987160  0.69888  ...  0.991581      NaN       NaN  NaN  1.037600
4.998  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
5.000  NaN       NaN  NaN       NaN      NaN  ...       NaN      NaN       NaN  NaN       NaN
5.000  NaN  0.001257  NaN  0.001027  0.03744  ... -0.009355  0.00000  0.006913  NaN  0.234896

编辑: 如果我一起删除时间列并重置索引呢?我真的不在乎时间栏。。只有测试和试用栏。那么dfu列表将如下所示:

[2501 rows x 2 columns],      ABCD TEST  ABCD TRIAL
4893             NaN                  1.048793
4894             NaN                  1.048793
4895             NaN                  1.017976
4896             NaN                  1.059065
4897             NaN                  1.038521
...              ...                       ...
7389             NaN                  0.997432
7390             NaN                  1.007704
7391             NaN                  1.007704
7392             NaN                  0.987160
7393             NaN                  0.001027

[2501 rows x 2 columns],       ABC TEST  ABC TRIAL
4007          0.73632                  1.039654
4008          0.76128                  1.021422
4009          0.82368                  0.984959
4010          0.74880                  1.021422
4011          0.71136                  1.048769
...               ...                       ...
6503          0.72384                  1.012306
6504          0.71136                  1.030538
6505          0.76128                  0.984959
6506          0.69888                  1.021422
6507          0.03744                 -0.008660

[2501 rows x 2 columns]]
[     ABCDE TEST  ABCDE TRIAL
4862             NaN                  1.065354
4863             NaN                  1.065354
4864             NaN                  1.048597
4865             NaN                  1.048597
4866             NaN                  1.065354
...              ...                       ...
7358             NaN                  0.989946
7359             NaN                  1.006703
7360             NaN                  1.006703
7361             NaN                  1.006703
7362             NaN                  0.001257

但是,如果我尝试pd.concat(dfs_list, axis=1, ignore_index=True),输出仍然是:

      0    1    2    3    4    ...  383  384  385  386       387
12    NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN       NaN
13    NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN       NaN
14    NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN       NaN
15    NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN       NaN
16    NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN       NaN
...   ...  ...  ...  ...  ...  ...  ...  ...  ...  ...       ...
7491  NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN  0.970004
7492  NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN  0.978454
7493  NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN  1.020701
7494  NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN  1.037600
7495  NaN  NaN  NaN  NaN  NaN  ...  NaN  NaN  NaN  NaN  0.234896

Tags: columns数据test列表indextime时间nan
1条回答
网友
1楼 · 发布于 2024-04-25 23:23:16

让我们使用^{}。你知道吗

df_list[0].join(df_list[1:])

关于join的注释

Join columns with other DataFrame either on index or on a key column. Efficiently join multiple DataFrame objects by index at once by passing a list.

other : DataFrame, Series, or list of DataFrame

相关问题 更多 >