我找到答案的最接近的是:Update a dataframe in pandas while iterating row by row
然而,它没有回答我的问题。这就是我想要做的事情:
#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()但除此之外我还没找到一个例子。
答案 0 :(得分:1)
您不需要遍历行。这可以使用矢量化方法完成。根据您的选择标准创建一个布尔掩码。
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