熊猫合并来自单个数据框的显示列

时间:2019-03-07 07:24:02

标签: python pandas pandas-join

我正在使用pandas中的merge来连接两个数据框,但是结果包含来自单个数据框的列。这是一段代码:

df1
date(index) | Total | Unique

df2
date(index) | Total | Unique

result = pd.merge(df1, df2, how="inner")
Output:
Total | Unqiue

Expected Output:
df1_Total | df2_Unique | df2_total |  df2_unique

我也尝试过后缀,但是后缀也不起作用。

3 个答案:

答案 0 :(得分:2)

result = pd.merge(df1, df2, how="inner", on='date(index)')

这将在date(index)上加入。根据需要将联接密钥更改为所需的

答案 1 :(得分:1)

DataFrame.add_prefixleft_onright_on参数是可能的,但是由于默认的内部联接,两列中的值都相同,

df1 = pd.DataFrame([(10,2),(20,4),(30,6)], 
                   columns=['Total','Unique'], 
                   index=pd.date_range('2015-01-01', periods=3))
df2 = pd.DataFrame([(10,2),(30,6),(20,600)], 
                    columns=['Total','Unique'], 
                    index=pd.date_range('2015-01-02', periods=3))

#print (df1)
#print (df2)

result = pd.merge(df1.add_prefix('df1_'), 
                  df2.add_prefix('df2_'),
                  left_on=['df1_Total','df1_Unique'],
                  right_on=['df2_Total','df2_Unique'])
print (result)
   df1_Total  df1_Unique  df2_Total  df2_Unique
0         10           2         10           2
1         30           6         30           6

如果需要通过索引值联接,请使用left_indexright_indexsuffixes

result = pd.merge(df1, 
                  df2,
                  left_index=True,
                  right_index=True,
                  suffixes=('_df1','_df2'))
print (result)
            Total_df1  Unique_df1  Total_df2  Unique_df2
2015-01-02         20           4         10           2
2015-01-03         30           6         30           6

答案 2 :(得分:0)

在“日期”列中指定合并功能参数

pd.merge(df1, df2, how="inner", on="Date")