【问题标题】:How to fill specific values from one dataframe to another dataframe如何将特定值从一个数据帧填充到另一个数据帧
【发布时间】:2021-07-02 23:33:28
【问题描述】:

我有一个更大的数据框 ( A ) 和一个更小的数据框 ( B )。
A(更大的数据框)

from   val  null
Abc_1   45  76
Abc_2   46  77
Abc_3   47  78
Abc_4   48  79
Abc_5   49  80
Abc_6   50  81
Abc_7   51  82
Abc_8   52  83
Abc_9   53  84
Abc_10  54  85
.
.
.

B(较小的数据框)

from    null
Abc_3   3
Abc_8   3
Abc_4   5
Abc_1   2
Abc_6   4
.
.
.

“from”列是两个数据框的索引。 B 数据帧的“发件人”是 A 数据帧的“发件人”的子集,但它是杂乱无章的(与 A 数据帧的顺序不同。)

我想做一些操作,将相应行的 B 数据帧的“null”替换为 A 数据帧的“null”

所以生成的数据帧输出应该如下所示。

from   val  null
Abc_1   45  2
Abc_2   46  77
Abc_3   47  3
Abc_4   48  5
Abc_5   49  80
Abc_6   50  4
Abc_7   51  82
Abc_8   52  3
Abc_9   53  84
Abc_10  54  85
.
.
.

【问题讨论】:

    标签: python pandas numpy join merge


    【解决方案1】:

    使用Series.map by Series from B by select null 列替换由Series.fillna 原始列不匹配的值:

    A['null'] = A.index.to_series().map(B['null']).fillna(A['null']).astype(int)
    print (A)
            val  null
    from             
    Abc_1    45     2
    Abc_2    46    77
    Abc_3    47     3
    Abc_4    48     5
    Abc_5    49    80
    Abc_6    50     4
    Abc_7    51    82
    Abc_8    52     3
    Abc_9    53    84
    Abc_10   54    85
    

    或者在DataFrame.merge 中使用左连接,DataFrame.pop 用于提取列,Series.fillna:

    注意:如果需要处理多列,此解决方案更好。

    df = A.merge(B, on='from', how='left', suffixes=('','_'))
    df['null'] = df.pop('null_').fillna(df['null']).astype(int)
    print (df)
            val  null
    from             
    Abc_1    45     2
    Abc_2    46    77
    Abc_3    47     3
    Abc_4    48     5
    Abc_5    49    80
    Abc_6    50     4
    Abc_7    51    82
    Abc_8    52     3
    Abc_9    53    84
    Abc_10   54    85
    

    【讨论】:

    • 在第一个答案中,A['from'] -> 它显示错误。我猜是因为'from'是索引而不是列@jezrael
    • @VishalAnand - from 是两个 DataFrame 中的索引?
    • 是的from 是索引@jezrael
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2019-07-15
    • 2020-06-16
    • 2021-10-09
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多