在满足其他条件时更新Pandas Dataframe行的列(类似SQL UPDATE)
我找到的最接近答案的内容是这个:在逐行遍历时更新pandas中的数据框
不过,这个并没有回答我的问题。以下是我想做的事情:
#for each dataframe row
# if it matches criteria a, b, and c
# update two column d and e with new values
这里有一个虚构的数据框例子,叫做df:
first_name last_name city state number_of_cousins number_of_siblings
0 Margaret Smith C C 0 0
1 April Smith C D 0 0
2 June Smith C C 0 0
3 David Smith A D 0 0
我需要让第0行和第2行分别有2个表亲和3个兄弟姐妹。
cousins_and_siblings = [2,3]
我知道我需要使用.iterrows(),但除此之外,我找不到其他的例子。
1 个回答
4
你不需要一个一个地遍历每一行。这可以通过向量化的方法来完成。首先,根据你的选择标准创建一个布尔掩码。
city_state_mask = (df.city == 'C') & (df.state == 'C')
然后用这个掩码来选择行,再进行赋值。你需要先选择值,然后再传入掩码。df["Col"][mask] = 'value'
会更新原始的数据框。而df[mask]["Col"] = 'value'
只是给一个副本赋值,这不是你想要的结果。
df['number_of_siblings'][city_state_mask] = 2
df['number_of_cousins'][city_state_mask] = 3