将数据帧中的子字符串映射到 return 值作为新列
Mapping Substrings from dataframe to return values as a new column
如果我有一个邮政编码列,我希望能够将每行的子字符串关联到特定区域。我考虑过使用字典
dict = { 'SW1': 'London','NE':'London','W1A':'Other','CT': 'Other'}
Postal Code
SW1E 5Z
NE99 1AR
SW1
W1A 1ER
CT21 4JF
想要table:
Postal Code Region
SW1E 5Z London
NE99 1AR London
SW1 London
W1A 1ER Other
CT21 4JF Other
但是,我不知道如何解析列的子字符串以使用 python (pandas) 创建区域列。请就语法提出建议
使用 series.str.extract
基于字典键并将它们映射回以创建新列。
df['Region']=(df['Postal Code'].str.extract('('+'|'.join(mydict.keys())+')',expand=False)
.map(mydict))
print(df)
Postal Code Region
0 SW1E 5Z London
1 NE99 1AR London
2 SW1 London
3 W1A 1ER Other
4 CT21 4JF Other
请注意,我已将 dict
重命名为 mydict
,因为 dict
是一个内置变量,如果存储为变量,它将覆盖字典的行为。
我认为您可以通过 lambda
函数轻松找到城市:
dict_ = {'SW1': 'London','NE':'London','W1A':'Other','CT':'Other'}
firstpostal = 'SW1E'
secondpostal = 'abc'
findcountry = lambda postal: [dict_[i] for i in dict_.keys() if i in postal]
print(findcountry(firstpostal))
print(findcountry(secondpostal))
和输出:
['London']
[]
您可以查看输出列表是否找到城市。
如果我有一个邮政编码列,我希望能够将每行的子字符串关联到特定区域。我考虑过使用字典
dict = { 'SW1': 'London','NE':'London','W1A':'Other','CT': 'Other'}
Postal Code
SW1E 5Z
NE99 1AR
SW1
W1A 1ER
CT21 4JF
想要table:
Postal Code Region
SW1E 5Z London
NE99 1AR London
SW1 London
W1A 1ER Other
CT21 4JF Other
但是,我不知道如何解析列的子字符串以使用 python (pandas) 创建区域列。请就语法提出建议
使用 series.str.extract
基于字典键并将它们映射回以创建新列。
df['Region']=(df['Postal Code'].str.extract('('+'|'.join(mydict.keys())+')',expand=False)
.map(mydict))
print(df)
Postal Code Region
0 SW1E 5Z London
1 NE99 1AR London
2 SW1 London
3 W1A 1ER Other
4 CT21 4JF Other
请注意,我已将 dict
重命名为 mydict
,因为 dict
是一个内置变量,如果存储为变量,它将覆盖字典的行为。
我认为您可以通过 lambda
函数轻松找到城市:
dict_ = {'SW1': 'London','NE':'London','W1A':'Other','CT':'Other'}
firstpostal = 'SW1E'
secondpostal = 'abc'
findcountry = lambda postal: [dict_[i] for i in dict_.keys() if i in postal]
print(findcountry(firstpostal))
print(findcountry(secondpostal))
和输出:
['London']
[]
您可以查看输出列表是否找到城市。