首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas -2数据帧,将df1的索引列添加到第二列上的df2

Pandas -2数据帧,将df1的索引列添加到第二列上的df2
EN

Stack Overflow用户
提问于 2016-11-09 18:26:30
回答 1查看 341关注 0票数 3

我有两个数据帧:

代码语言:javascript
复制
df1 (sample, has more columns):

+---+----------------+--------------+-----------+
|   |     Region     | Placement ID |   Units   |
+---+----------------+--------------+-----------+
| 0 | Western Europe | 1.10872E+13  | 367628.76 |
| 1 | Western Europe | 1.10872E+13  | 367628.76 |
| 2 | Western Europe | 1.10872E+13  | 74604.63  |
+---+----------------+--------------+-----------+

df2 (sample, has more columns:

+-----------+----------------+--------------+
| Creatives | Publisher Name | Placement ID |
+-----------+----------------+--------------+
| Temenos   | Quantcast      | 1.10872E+13  |
| Temenos   | Quantcast      | 1.10872E+13  |
| Temenos   | Quantcast      | 1.10872E+13  |
+-----------+----------------+--------------+

我想做的是根据Placement ID在dataframe 2中添加一个额外的列,其中包含dataframe 1的索引列。

数据框1或2中的某些放置Id字段可能为空,或具有错误的值。如果不匹配或发现错误,则我想添加一个缺少或错误的值,如N/A、Missing或留空

EN

回答 1

Stack Overflow用户

发布于 2016-11-09 18:34:24

IIUC您需要merge,但存在重复项的问题,因此首先使用drop_duplicates删除它们,然后选择一列用于添加,另一列用于join (Placement ID):

代码语言:javascript
复制
print (pd.merge(df2, 
                df1.drop_duplicates('Placement ID')[['Units', 'Placement ID']], 
                how='left', 
                on='Placement ID'))


  Creatives Publisher Name  Placement ID      Units
0   Temenos      Quantcast  1.108720e+13  367628.76
1   Temenos      Quantcast  1.108720e+13  367628.76
2   Temenos      Quantcast  1.108720e+13  367628.76

如果需要添加索引,则需要reset_index

代码语言:javascript
复制
print (pd.merge(df2, 
                df1.drop_duplicates('Placement ID')
                   .reset_index()[['level_0','Placement ID']], 
                how='left', 
                on='Placement ID'))
  Creatives Publisher Name  Placement ID  level_0
0   Temenos      Quantcast  1.108720e+13        0
1   Temenos      Quantcast  1.108720e+13        0
2   Temenos      Quantcast  1.108720e+13        0

需要删除重复项,因为通过连接键merge多行-在df2中有3个相同的值1.108720e+13,在df1中有3行,因此获得3x3行,如下所示:

代码语言:javascript
复制
print (pd.merge(df2, 
                df1.reset_index()[['level_0', 'Placement ID']], 
                how='left', 
                on='Placement ID'))

  Creatives Publisher Name  Placement ID  level_0
0   Temenos      Quantcast  1.108720e+13        0
1   Temenos      Quantcast  1.108720e+13        1
2   Temenos      Quantcast  1.108720e+13        2
3   Temenos      Quantcast  1.108720e+13        0
4   Temenos      Quantcast  1.108720e+13        1
5   Temenos      Quantcast  1.108720e+13        2
6   Temenos      Quantcast  1.108720e+13        0
7   Temenos      Quantcast  1.108720e+13        1
8   Temenos      Quantcast  1.108720e+13        2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40504724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档