【发布时间】:2016-03-22 17:07:00
【问题描述】:
关于如何在DataFrame 中选择行并替换这些行中的列中的值,关于 SO 存在大量问题,但缺少一个用例。以DataFramefrom this question为例,
In [1]: df
Out[1]:
apple banana cherry
0 0 3 good
1 1 4 bad
2 2 5 good
如果想要根据另一列更改单个列,这很有效:
df.loc[df.cherry == 'bad', 'apple'] = df.banana * 2
或者这样设置两列中的值:
df.loc[df.cherry == 'bad', ['apple', 'banana'] = np.nan
但这不起作用:
df.loc[df.cherry == 'bad', ['apple', 'banana'] = [df.banana, df.apple]
,因为显然右边是3x2,而左边是1x2,所以报错
ValueError: Must have equal len keys and value when setting with an ndarray
所以我明白问题出在哪里,但解决办法是什么?
【问题讨论】: