【问题标题】:Pandas: merge dataframes and create new conditional columnsPandas:合并数据框并创建新的条件列
【发布时间】:2016-12-25 16:45:14
【问题描述】:

我有两个大熊猫数据框(数百万行),其中包含两列、一个组标识符和一个 ID。我正在尝试创建一个组合数据帧,其中包含组、id 以及如果 id 在第一个数据帧中的 1 列,如果 id 在第二个数据帧中,则为 0 和 1 列,否则一个 0。

换句话说,我正在尝试合并两个数据帧,并根据每个原始数据帧是否存在 id 创建条件列。有关如何解决此问题的任何建议?

这是一个小例子:

import pandas as pd

>>> df_a = pd.DataFrame({'group': list('AAABBB'), 'id': [11,12,13,21,22,23]})
>>> df_b = pd.DataFrame({'group': list('AAABB'), 'id': [11,13,14,22,24]})
>>> df_a

 group  id
 A     11
 A     12
 A     13
 B     21
 B     22
 B     23

>>> df_b

group  id
A     11
A     13
A     14
B     22
B     24

输出应如下所示:

>>> df_full      
 group  id  a  b
 A      11  1  1
 A      12  1  0
 A      13  1  1
 A      14  0  1
 B      21  1  0
 B      22  1  1
 B      23  1  0
 B      24  0  1

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    您可以在合并之前为每个数据框创建两列,合并后用零填充 na:

    df_a['a'] = 1
    df_b['b'] = 1
    
    pd.merge(df_a, df_b, how = 'outer', on = ['group', 'id']).fillna(0)
    
    # group   id      a   b
    # 0   A 11.0    1.0 1.0
    # 1   A 12.0    1.0 0.0
    # 2   A 13.0    1.0 1.0
    # 3   B 21.0    1.0 0.0
    # 4   B 22.0    1.0 1.0
    # 5   B 23.0    1.0 0.0
    # 6   A 14.0    0.0 1.0
    # 7   B 24.0    0.0 1.0
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      相关资源
      最近更新 更多