如果满足条件,则用另一列中的值替换一列中的行

时间:2019-01-31 23:33:57

标签: pandas

我有以下数据框:

df = pd.DataFrame([[1, 2, "Yes"], [4, 5, "No"], [7, 8, "Yes"], [3, 5, "No"]],
...      index=['a', 'b', 'c', 'd' ],
...      columns=['column_1', 'column_2', 'condition'])

    column_1    column_2    condition
a       1           2        Yes
b       4           5        No
c       7           8        Yes
d       3           5        No

当条件为column_1时,我想用column_2中的相应值替换"Yes"中的行值。我一直在尝试使用以下代码进行此操作:

df.loc[df['condition'] == "Yes", ['column_1']] = df.ix[df['column_1']]

任何提示都非常感谢!

1 个答案:

答案 0 :(得分:1)

ix已过时。但是除此之外,您在这里不需要任何切片器/选择器。只需在LHS上使用loc进行选择,熊猫便会执行索引对齐的分配。这样就足够了:

df.loc[df['condition'] == "Yes", 'column_2'] = df['column_1']

在索引对齐的分配中,仅引入df['column_1']所需的索引。从

df.loc[df['condition'] == "Yes", 'column_2'] 

a    1
c    7
Name: column_2, dtype: int64

我们看到df['column_1']仅需要索引“ a”和“ c”的值,其他所有内容都将被忽略。