【问题标题】:how to modify a df based on another df boolean values?如何根据另一个 df 布尔值修改 df?
【发布时间】:2019-01-27 02:45:18
【问题描述】:

我有 2 个数据帧。 df1(布尔值)和 df2(整数)。我不知道如何根据 df1 修改 df2。

目标:修改 df2,如果 df1 中的值为 False,则将值更改为 100。如果为 True,请不要更改。

df1
date         x     y      w      z 
2017-02-02  True  False  True   True
2017-02-03  False True   True   True


df2
date         x    y    w   z 
2017-02-02   1    2    3   4
2017-02-03   2    4    1   3

期待

df2
date         x    y    w   z 
2017-02-02   1   100   3   4
2017-02-03   100  4    1   3

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这可以通过一个简单的条件语句来实现

    df2[df1==False] = 100

    【讨论】:

    • 哦不知道你可以简单地在 [] 中添加另一个 df。谢谢!
    • 老实说,直到我搜索并尝试了不同的东西,我才知道这一点。我不是在讽刺或粗鲁。只是说
    【解决方案2】:

    where + iloc

    您可以使用pd.DataFrame.where,确保您只选择相关的列(即忽略第一列)。通常从不需要使用 Pandas 明确检查 == False== True

    df2.iloc[:, 1:] = df2.iloc[:, 1:].where(df1.iloc[:, 1:], 100)
    
    print(df2)
    
             date    x    y  w  z
    0  2017-02-02    1  100  3  4
    1  2017-02-03  100    4  1  3
    

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2017-04-22
      • 2016-09-19
      • 2022-12-03
      • 2020-09-16
      • 2020-04-06
      • 2020-12-29
      • 2020-10-24
      • 1970-01-01
      相关资源
      最近更新 更多