在满足其他条件时更新Pandas Dataframe行的列(类似SQL UPDATE)

2 投票
1 回答
1632 浏览
提问于 2025-04-28 11:08

我找到的最接近答案的内容是这个:在逐行遍历时更新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

撰写回答