【问题标题】:Join a list of DataFrame加入 DataFrame 列表
【发布时间】:2022-01-24 06:43:44
【问题描述】:

我有一个 Pandas DataFrame 列表,每个 df 都有一个名为 sub_id 的列和一个名为 data_* 的列。 data_* 列特定于每个 df:第一个具有 data_0,第二个具有 data_1,等等。 架构是这样的:

[[`sub_id`,`data_0`], [`sub_id`,`data_1`], [`sub_id`,`data_2`],...[`sub_id`,`data_10`]]

在我拥有的第一个 df 内:

sub_id  data_0
1       1232456
2       4567
5       98786
11      8643
.       .
.       .

在我拥有的第二个 df 内:

sub_id  data_1
4       1265474
5       4567
20      23434
13      8675443
.       .
.       .

在我拥有的第三个 df 内:

sub_id  data_2
11      1265474
1       4567
20      23434
5       8675443
.       .
.       .

我使用concat 拥有一个包含所有数据的唯一 df,但结果不是我想要的。

我想要的是这样的df:

sub_id  data_0  data_1  data_2  ..
1       1232456         4567
2       4567
4               1265474
5       98786   4567    8675443
11      8643            1265474
13              8675443
20              23434   23434
.       .
.       .

我该怎么做?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用concat 创建DataFrame.set_index

    dfs = [df1, df2, df3]
    df = pd.concat([x.set_index('sub_id') for x in dfs], axis=1)
    print (df)
               data_0     data_1     data_2
    sub_id                                 
    1       1232456.0        NaN     4567.0
    2          4567.0        NaN        NaN
    4             NaN  1265474.0        NaN
    5         98786.0     4567.0  8675443.0
    11         8643.0        NaN  1265474.0
    13            NaN  8675443.0        NaN
    20            NaN    23434.0    23434.0
    

    【讨论】:

    • 你救了我! :)
    猜你喜欢
    • 2016-07-02
    • 2017-01-29
    • 1970-01-01
    • 2015-05-14
    • 2015-10-06
    • 2021-09-14
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多