python—如何从字典和使用条件在现有df中创建列?

j0pj023g  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(314)

我有以下df(仅举个例子):

data={'Name': ['Tom', 'Joseph', 'Krish', 'John']}
df=pd.DataFrame(data)
print(df)

city={"New York": "123", 
 "LA":"456",
 "Miami":"789"}

Output:
     Name
0     Tom
1  Joseph
2   Krish
3    John

我想在df中添加另一列,它将基于城市词典。
我想这样做的条件如下:如果名字是汤姆或克里斯,那么他们应该得到123(纽约)。如果名字是约翰,那么他应该得到456(洛杉矶)。如果名字是约瑟夫,那么他应该得到789(迈阿密)。
提前感谢:)

sbdsn5lh

sbdsn5lh1#

尝试通过loc和布尔掩蔽:

df.loc[df['Name'].isin(['Tom','Krish']),'City']='New York'
df.loc[df['Name'].eq('Joseph'),'City']='LA'
df.loc[df['Name'].eq('John'),'City']='Miami'

最后:

df['Value']=df['City'].map(city)

# you can also use replace() in place of map()


# import numpy as np

cond=[
    df['Name'].isin(['Tom','Krish']),
    df['Name'].eq('Joseph'),
    df['Name'].eq('John')                     
]
df['City']=np.select(cond,['New York','LA','Miami'])
df['Value']=df['City'].map(city)

相关问题