python - 更改 pandas 数据框中的值与另一个数据框中存在同一行

标签 python pandas

我有以下内容。 2 个 pandas 数据框:

df1 = pandas.DataFrame(data = {'col1' : [1, 2, 3, 4, 5], 'col2' : [10, 11, 12, 13, 14], 'col3' : [0,2,0,-1,0]}) 
df2 = pandas.DataFrame(data = {'col1' : [1, 2, 3], 'col2' : [10, 11, 12], 'col6' : [20, 31, 12]})

如果 df1 和 df2 中的 col1col2 具有相同的值,如何将 df1 中的 col3 中的值更改为 0。 df1 的结果应如下所示:

  col1  col2  col3
0     1    10     0
1     2    11     0
2     3    12     0
3     4    13    -1
4     5    14     0

最佳答案

如果合并 col1col2 上的两个 DataFrame,则生成的 DataFrame 将包含两个 DataFrame 在这些列中具有相同值的行。然而, Pandas loses the index合并时。您可以在合并之前使用 reset_index 来保留索引并在 .loc 中使用该索引:

df1.loc[df1.reset_index().merge(df2, on=['col1', 'col2'])['index'], 'col3'] = 0

df1
Out: 
   col1  col2  col3
0     1    10     0
1     2    11     0
2     3    12     0
3     4    13    -1
4     5    14     0

关于python - 更改 pandas 数据框中的值与另一个数据框中存在同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863830/

相关文章:

python - 将Python编译成机器码可行吗?

无需转码即可修改 MP3 音频的 Python 库

python - Pandas - 如果列较大且不为空则生成值

python - Pandas 读取具有可变行的 CSV 文件以在行开头使用特殊字符跳过

python - 访问多处理映射中的共享数据帧

python - 从 pandas 数据框中选择具有多个条件的非 NaN 行

python - 使用 Databricks 处理大量 JSON (~12TB)

javascript - Django 的 CSRF 验证失败,尽管 Firebug 说 cookies 选项卡下有一个 csrftoken。为什么?

python - Polars - 将列中少于 X 个唯一值的值替换为不同的特定值

python - Pandas ,忽略 NaN 的滚动最大值