【问题标题】:How can I Join two dataframe and keep all key column in pandas?如何加入两个数据框并将所有关键列保留在熊猫中?
【发布时间】:2021-05-09 07:12:53
【问题描述】:

我需要使用相同的键来内部连接 ​​2 个数据帧我在进行连接时创建了几个临时数据帧下面的代码工作正常,但我想知道在加入两个熊猫时是否有办法保留两个连接键列下面以 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, how='inner' ,on='subj')

我有这两个数据框

head_df:

          pred  subj  obj
0  nationality  BART  USA

body_df:

           pred  subj      obj
0  placeOfBirth  BART  NEWYORK
1     hasFather  BART   HOMMER

我想加入(内部)这两个基于 subj (head_df) 和 subj (body_df) 的数据帧。

我想要的输出是

        pred_x subj_x obj_x        pred_y subj_y    obj_y
0  nationality   BART   USA  placeOfBirth   BART  NEWYORK
1  nationality   BART   USA     hasFather   BART   HOMMER

谢谢

【问题讨论】:

  • 如果这些重复的列肯定是相同的内容,它们有什么用?无论如何,您都可以创建一个重复的列并重命名旧/新列。

标签: python pandas dataframe


【解决方案1】:

如果要在列标签中添加“_x”和“_y”,请使用suffixes

joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])

结果将是:

    pred_x  subj    obj_x   pred_y  obj_y
0   nationality BART    USA placeOfBirth    NEWYORK
1   nationality BART    USA hasFather   HOMMER

我不知道您为什么需要重复的连接列。只复制这些列怎么样?

joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])
joined_df.rename(columns={'subj':'subj_x'}, inplace=True)
joined_df['subj_y'] = joined_df['subj_x']

结果将是:

    pred_x  subj_x  obj_x   pred_y  obj_y   subj_y
0   nationality BART    USA placeOfBirth    NEWYORK BART
1   nationality BART    USA hasFather   HOMMER  BART

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2015-06-09
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2021-05-15
    • 2015-12-08
    相关资源
    最近更新 更多