使用字典中的键在 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
我有一个带有邮政编码的 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