我有以下数据框:
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']]
任何提示,不胜感激!
ix
不推荐使用。但是除此之外,这里不需要任何切片器/选择器。只需loc
在LHS上选择,熊猫就会执行索引对齐的分配。因此,这就足够了:
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
我们仅从中需要索引“ a”和“ c”的值df['column_1']
,其他所有内容都将被忽略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句