尝试遍历一列以填充另一列

时间:2021-01-15 20:44:44

标签: pandas dictionary append iteration

我正在尝试填充 num_crimes 列。由于邮政编码在房屋数据框中重复,我只想从包含每个邮政编码的所有犯罪的字典中添加与该邮政编码相关的犯罪数量。

houses 数据框包含 5000 个条目,而字典仅包含 67 个,所以我不能只是合并它们。

这是房屋数据框:

sold_price | zipcode | fireplaces | num_crimes
 5300000   |  85637  |      6     | NaN
 4200000   |  85646  |      5     | NaN
 4200000   |  85646  |      5     | NaN
 4500000   |  85646  |      6     | NaN
 3411450   |  85750  |      4     | NaN
        

这是字典:

{85141: 1,85601: 2, 85607: 1, 85614: 4, 85622: 2, 85629: 4, 85634: 1....}

问题:这是我用于此的代码,但它不会更改 num_crimes 中的值:

def populate(df1):

for row, rows in df1.iterrows():
    
    if rows[1] in my_dict:
        rows[3]=my_dict[rows[1]]
    else:
        rows[3]=0

2 个答案:

答案 0 :(得分:1)

你可以这样做:

df["num_crimes"] = df["zipcode"].apply(lambda z: my_dict[z])

如果您在 df 中有不在 my_dict 中的邮政编码,您也需要处理:

df["num_crimes"] = df["zipcode"].apply(lambda z: my_dict[z] if z in my_dict else -1)

答案 1 :(得分:0)

如果您将数据作为文本而不是图像发布,那么回答问题会容易得多。无论如何,您可以将 dict 制作成一个数据框,然后将其与原始数据框连接起来。所以是这样的:

houses.set_index("Zipcode").join(pd.DataFrame.from_dict(my_dict, orient='index', columns = ["Crimes from dict"]))

那行得通吗?