如何连接两个dataframe并将所有键列保留在pandas中?

2024-05-21 02:22:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用同一个键内部连接2个数据帧我在连接时创建了几个临时数据帧下面的代码工作正常,但我想知道是否有一种方法可以在以subs作为键连接下面的两个数据帧时保留两个连接键列

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')

我有两个数据帧

总目:

          pred  subj  obj
0  nationality  BART  USA

正文:

           pred  subj      obj
0  placeOfBirth  BART  NEWYORK
1     hasFather  BART   HOMMER

我想基于subc(head_-df)和subc(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

谢谢


Tags: 数据objdfbodyheadpdnationalityusa
1条回答
网友
1楼 · 发布于 2024-05-21 02:22:15

如果要向列标签添加“\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

相关问题 更多 >