【发布时间】:2016-10-07 03:35:40
【问题描述】:
我正在尝试有条件地更新我的熊猫数据框中的多行。这是我的数据:
df = pd.DataFrame([[1,1,1], [2,2,2], [3,3,3]], columns=list('ABC'))
我可以分两步完成我想要的更新:
df.loc[df['A'] == 1, 'B'] = df['C'] +10
df.loc[df['A'] == 1, 'A'] = df['C'] +11
或者我可以一步更新为常数值:
df.loc[df['A'] == 1, ['A', 'B']] = [11, 12]
但我无法一步更新其他列中的多个列:
df.loc[df['A'] == 1, ['A', 'B']] = [df['C'] + 10, df['C'] + 11]
...
ValueError: shape mismatch: value array of shape (2,3) could not be broadcast to indexing result of shape (1,2)
有什么想法可以做到这一点吗?
编辑:感谢@EdChum 为简单案例提供简单的解决方案 - 已更新问题以展示更复杂的现实。
【问题讨论】: