如何将字典的键作为熊猫数据框中的列值?

时间:2019-02-04 01:35:21

标签: python-3.x pandas dataframe dictionary

我有两个数据帧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

1 个答案:

答案 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