在符合其余行的条件时更新Pandas Dataframe行中的列(在SQL UPDATE中)

时间:2014-10-19 23:28:05

标签: python python-2.7 pandas

我找到答案的最接近的是: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()但除此之外我还没找到一个例子。

1 个答案:

答案 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