我有两个数据帧df & df1
,并且我已经将df1
转换为字典,因为它仅包含两列。如下图所示:
import pandas as pandas
df = pd.read_csv('data.csv')
df['company'] = 0
df1 = pd.read_csv('data1.csv')
mydict = dict(zip(df1.agent_id, df1.company))
for x in df.agent_id:
for k,v in mydict.items():
if k == x:
df.loc[df['company']] = v
现在,如果要满足以下条件,我想将mydict
的值附加为列df['company']
中的值。我怎样才能做到这一点?有人可以解释吗?我知道我只是缺少一个简单的逻辑。我还是不知道。
如果df
是
agent_id
0 184
1 182
2 113
3 157
4 137
5 199
6 181
和mydict
是这样的:
mydict = {184: 'LuxuryPods',
113: 'smartflat.com',
157: 'ApartaMinutes',
199: 'HouseMouse',
181: 'LuxuryPods',
182: 'Ramax',
137: 'LuxuryPods'}
然后生成的df
应该如下所示:
agent_id company
0 184 LuxuryPods
1 182 Ramax
2 113 smartflat.com
3 157 ApartaMinutes
4 137 LuxuryPods
5 199 HouseMouse
6 181 LuxuryPods
答案 0 :(得分:2)
尝试以下代码
df = pd.DataFrame({'agent_id': [184, 182, 113, 157]})
mydict = {184: 'LuxuryPods',
113: 'smartflat.com',
157: 'ApartaMinutes',
182: 'Ramax'}
df['company'] = df['agent_id'].map(mydict)
输出
agent_id company
0 184 LuxuryPods
1 182 Ramax
2 113 smartflat.com
3 157 ApartaMinutes
基本上,关键是使用map
函数将agent_id
中的所有值映射到其相应的公司。使用map
函数,还可以在找不到匹配项的情况下指定所需的值。参数为na_action
。