我有dataframe列,例如 df ['towns']
Apple
banana
cigor
delmon
和字典
cities = {
'x':[Apple,Banana],
'y':[Cigor,Zoor,Elk],
'z':[Delmon,Foo]
}
我想将新列创建为 df ['city'] ,并根据我的词典为每行添加标签。正确的方法是什么?
答案 0 :(得分:0)
使用Series.map
,但首先将字典转换为小写:
#swap key values in dict
#http://stackoverflow.com/a/31674731/2901002
d = {k.lower() : oldk for oldk, oldv in cities.items() for k in oldv}
df1['city'] = df1['towns'].str.lower().map(d)
print (df1)
towns city
0 Apple x
1 banana x
2 cigor y
3 delmon z
或者如果需要将值转换为大写单词:
d = {k : oldk for oldk, oldv in cities.items() for k in oldv}
#first letter first word
df1['city'] = df1['towns'].str.title().map(d)
#first letter all words
#df1['city'] = df1['towns'].str.capitalize().map(d)