【问题标题】:How can I keep all the key columns and do the Pandas dataframe join?如何保留所有关键列并加入 Pandas 数据框?
【发布时间】:2021-05-08 09:15:21
【问题描述】:

我需要使用相同的键加入 2 个数据帧我在执行连接时创建了几个临时数据帧下面的代码工作正常,但我想知道是否有办法在加入时保留两个连接键列,如 subj_x 和 subj_y下面的两个熊猫数据框以 subj 为键。谢谢

head = [['nationality', 'BART', 'USA']]
body = [['placeOfBirth', 'BART', 'NEWYORK'], ['hasFather', 'BART', 'HOMMER']]
head_df = pd.DataFrame(head, columns = ['pred', 'subj', 'obj'])
body_df = pd.DataFrame(body, columns = ['pred', 'subj', 'obj'])
joined_df = pd.merge(head_df, body1_df, on='subj')

【问题讨论】:

    标签: python-3.x pandas dataframe join


    【解决方案1】:

    您没有得到subj_x 和subj_y 列,因为您正在从两列加入dfs on=subj,并且由于您没有在merge 中提供how 参数,因此pandas 将其重定向到默认合并是inner。

    可以在各种参数上合并dfs,详情here

    如果我们想要两个数据帧的完整数据集,我们可以进行外连接。

    joined_df = pd.merge(head_df, body_df, how='outer')
    

    输出

        pred            subj    obj
    0   nationality     BART    USA
    1   placeOfBirth    BART    NEWYORK
    2   hasFather       BART    HOMMER
    

    如果我们想加入列轴以从两个数据框中获取所有数据。

    joined_df = pd.concat([head_df, body_df], join='outer', axis=1)
    

    输出

        pred        subj    obj pred          subj  obj
    0   nationality BART    USA placeOfBirth  BART  NEWYORK
    1   NaN         NaN     NaN hasFather     BART  HOMMER
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 2019-07-18
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      相关资源
      最近更新 更多