使用字典中的键在 pandas 数据框中查找相同的 "keys",然后将字典中的值分配给数据框空列

Using keys from a dict to look for the same "keys" in a pandas dataframe, then assign value from dict to dataframe empty column

我有一个带有邮政编码的 pandas 数据框。 我还有一本字典,其中 keys = zipkode 和 values = regions

词典

my_regions = {8361: 'Central region', 8381: 'Central region', 8462: 'North region', 8520: 'South region', 8530: 'Central region', 8541: 'South region'}

数据框有一个列名

df["zipcode"]= [8462, 8361, 8381,8660,8530,8530]

当循环看到数据框中的邮政编码 == 到 dict.keys

中的 zipkode 时,我想使用字典值(区域名称)向数据框 df 添加一个新的 col

我试过了

my_regions_list = []

for keyname in my_regions:
    for zipcode in df.zipcode:
        if zipcode == my_regions.keys():
            my_regions_list.append(my_regions.values())
            # df["region"] = df.append(my_regions.values())
            df =df.insert(column="region", value = my_r)

列表为空,这不是将新行添加到现有数据框...

我也试过将其转换为数据框,但没有任何意义

df1 = pd.DataFrame(list(my_regions.items()),columns = ['ZIPCODE','REGIONNAME'])

我会坚持下去,尽管 .map() 据说比 .replace() 快只是因为结果不同,其他人可能会发现一个或另一个更适合他们的 use-case.

请注意,主要区别在于如果未找到映射,.replace() 将保持原始值不变,而 .map() 为不存在的映射生成 NaN

df["regions"] = df["zipcode"].replace(my_regions)

演示:

In [5]: df
Out[5]:
   zipcode
0     8462
1     8361
2     8381
3     8660
4     8530
5     8530

In [6]: df["regions"] = df["zipcode"].replace(my_regions)

In [7]: df
Out[7]:
   zipcode         regions
0     8462    North region
1     8361  Central region
2     8381  Central region
3     8660            8660
4     8530  Central region
5     8530  Central region

您可以使用 .map():

df = pd.DataFrame({"zipcode": [8462, 8361, 8381, 8660, 8530, 8530]})

my_regions = {
    8361: "Central region",
    8381: "Central region",
    8462: "North region",
    8520: "South region",
    8530: "Central region",
    8541: "South region",
}


df["name"] = df["zipcode"].map(my_regions)
print(df)

打印:

   zipcode            name
0     8462    North region
1     8361  Central region
2     8381  Central region
3     8660             NaN
4     8530  Central region
5     8530  Central region