【发布时间】:2019-04-03 15:03:39
【问题描述】:
如果 ColX != 0 的值,我需要有条件地更新下面的 ColY。与其他示例的不同之处在于,我需要将 ColY 替换为 ColX 中的值,而不是字符串
当我使用以下代码时,我可以使用 .loc 替换为字符串:
df1.loc[df1.ColX != 0, 'ColY'] = 'Example'
如何将相关的 ColY 值替换为 ColX 中的值?我尝试了以下方法无济于事
df1.loc[df1.ColX != 0, 'ColY'] = df1.ColX
我的原始数据框 df1 是:
ID ColX ColY
A 2024 0
B 0 2023
C 2019 0
D 2023 2024
我想要的输出是:
ID ColX ColY
A 2024 2024
B 0 2023
C 2019 2019
D 2023 2023
【问题讨论】:
-
您是要使用
.loc还是愿意接受其他建议? -
您的代码
df1.loc[df1.ColX != 0, 'ColY'] = df1.ColX工作正常,除非您有重复的索引或者它是类别数据 -
@BENY 如果索引有重复怎么办?
.loc不会通过仅在df.ColX上应用相同的布尔掩码df1.ColX != 0来更新值吗?
标签: python python-3.x pandas dataframe pandas-loc