I'm trying to conditionally update multiple rows in my panda dataframe. Here's my data:
df = pd.DataFrame([[1,1,1], [2,2,2], [3,3,3]], columns=list('ABC'))
I can do the update I want in two steps:
df.loc[df['A'] == 1, 'B'] = df['C'] +10
df.loc[df['A'] == 1, 'A'] = df['C'] +11
Or I can update to constant values in one step:
df.loc[df['A'] == 1, ['A', 'B']] = [11, 12]
But I can't update multiple columns from other columns in a single step:
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)
Any ideas how I can do this?
Edit: Thanks @EdChum for the simple solution for the simple case - have updated the question to demonstrate a more complex reality.