【问题标题】:Filling a Column in a Dataframe conditionally using values from another Dataframe使用来自另一个 Dataframe 的值有条件地填充 Dataframe 中的列
【发布时间】:2021-11-23 18:13:45
【问题描述】:

我有 2 个数据框,一个是名为“database”的查找数据框,另一个是名为“df”的数据框,其值将有条件地使用“database”数据框列中名为“Value”的值填充

  • 我试过 -- df['Value'] = pd.np.where 但它不起作用
  • 我试过 -- np.equal.outer 但它也不起作用

我尝试了合并,它可以工作,但它不会有条件地填充值,我想在 df 的 'Variab' 列中用 '1' 填充每一行的值,'col2' 只是一个空列所以忽略它。

提前致谢!

之前:df

ID Variab col2
A2 1
A2 1
A3 0
A3 1
A4 1
A3 0
A3 1
A4 1
A3 0
A3 1
A4 1

之前:数据库

ID Value
A2 Ball
A3 Sky
A4 Bird
A5 Fly
A6 Pizza

之后:(目标)

ID Variab Value col 2
A2 1 Ball
A2 1 Ball
A3 0
A3 1 Sky
A4 1 Bird
A3 0
A3 1 Sky
A4 1 Bird
A3 0
A3 1 Sky
A4 1 Bird

【问题讨论】:

  • 分享你目前尝试过的代码

标签: python pandas dataframe conditional-statements


【解决方案1】:

在merge之前使用mask:

df['Value'] = df.mask(df['Variab'].eq(0)).merge(db, on='ID', how='left')['Value']
print(df)

# Output
    ID  Variab  col2 Value
0   A2     1.0   NaN  Ball
1   A2     1.0   NaN  Ball
2   A3     0.0   NaN   NaN
3   A3     1.0   NaN   Sky
4   A4     1.0   NaN  Bird
5   A3     0.0   NaN   NaN
6   A3     1.0   NaN   Sky
7   A4     1.0   NaN  Bird
8   A3     0.0   NaN   NaN
9   A3     1.0   NaN   Sky
10  A4     1.0   NaN  Bird

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2021-12-02
    • 2019-11-28
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多