首页 文章

从另一个数据帧的值填充pandas数据框中的新列[重复]

提问于
浏览
0

这个问题在这里已有答案:

我有两个数据帧:

pd.DataFrame(data={'col1': ['a', 'b', 'a', 'a', 'b'], 'col2': ['c', 'c', 'd', 'd', 'c'], 'col3': [1, 2, 3, 4, 5, 1]})
   col1 col2  col3  
0    a    c     1   
1    b    c     2   
2    a    d     3   
3    a    d     4   
4    b    c     5   
5    h    i     1
pd.DataFrame(data={'col1': ['a', 'b', 'a', 'f'], 'col2': ['c', 'c', 'd', 'k'], 'col3': [12, 23, 45, 78]})
    col1 col2  col3 
0    a    c     12  
1    b    c     23  
2    a    d     45
3    f    k     78

我想根据col1和col2的值在第一个中构建一个新列,可以在第二个中找到 . 这就是新的:

pd.DataFrame(data={'col1': ['a', 'b', 'a', 'a', 'b'], 'col2': ['c', 'c', 'd', 'd', 'c'], 'col3': [1, 2, 3, 4, 5],'col4' : [12, 23, 45, 45, 23]})
    col1 col2  col3  col4
0    a    c     1    12
1    b    c     2    23
2    a    d     3    45
3    a    d     4    45
4    b    c     5    23
5    h    i     1    NaN

我怎么能这样做?

请你注意:)

Edit :有人建议在这个主题中寻找答案Adding A Specific Column from a Pandas Dataframe to Another Pandas Dataframe,但这不是同一个问题 .

在这里,不仅ID不存在,因为它在col1和col2中被分割,但最重要的是,虽然在第二个数据帧中是唯一的,但它在第一个数据帧中并不是唯一的 . 这就是为什么我认为合并和连接都不能解决这个问题 .

Edit2 :此外,df1中的耦合col1和col2可能不存在于df2中,在这种情况下,在col4中等待NaN,并且在df1中可能不需要耦合df2的col1和col2 . 为了说明这些情况,我在df1和df2中添加了一些行,以显示在最坏的情况下它是如何形成的

1 回答

  • 0

    你也可以使用 map 之类的

    In [130]: cols = ['col1', 'col2']
    
    In [131]: df1['col4'] = df1.set_index(cols).index.map(df2.set_index(cols)['col3'])
    
    In [132]: df1
    Out[132]:
      col1 col2  col3  col4
    0    a    c     1    12
    1    b    c     2    23
    2    a    d     3    45
    3    a    d     4    45
    4    b    c     5    23
    

相关问题