简体   繁体   English

如何使用Pandas Python合并数据框?

[英]How to merge dataframes using pandas python?

I have following two dataframes 我有以下两个数据框

data1 数据1

company,values
a,76
b,56
c,78
d,56

dataframe2 数据框2

company,comp_id
a,a1
b,b1

I need output like following format 我需要类似以下格式的输出

company,value,comp_id
 a,76,a1
 b,56,b1
 c,78
 d,56

how to merge dataframes like following format? 如何合并以下格式的数据框?

Use merge with fillna : 使用与fillna merge

#fillna only column comp_id
print (pd.merge(df1,df2,on='company', how='outer').fillna({'comp_id':''}))

#fillna all dataframe
#print (pd.merge(df1,df2,on='company', how='outer').fillna(''))

  company  values comp_id
0       a      76      a1
1       b      56      b1
2       c      78        
3       d      56  

Sample: 样品:

df1 = pd.DataFrame({'values': {0: 76, 1: 56, 2: 78, 3: 56}, 
                    'company': {0: 'a', 1: 'b', 2: 'c', 3: 'd'}})
print (df1)
  company  values
0       a      76
1       b      56
2       c      78
3       d      56

df2 = pd.DataFrame({'comp_id': {0: 'a1', 1: 'b1'}, 'company': {0: 'a', 1: 'b'}},
                   columns=['company','comp_id'])
print (df2)
  company comp_id
0       a      a1
1       b      b1

print (pd.merge(df1,df2,on='company', how='outer'))
  company  values comp_id
0       a      76      a1
1       b      56      b1
2       c      78     NaN
3       d      56     NaN

#fillna only column comp_id
print (pd.merge(df1,df2,on='company', how='outer').fillna({'comp_id':''}))
  company  values comp_id
0       a      76      a1
1       b      56      b1
2       c      78        
3       d      56 

使用pd.merge()

>>> pd.merge(dataframe1, dataframe2, on='company', how='outer')

You can use pd.concat() for this. 您可以为此使用pd.concat()。

I am adding an example for a better understanding. 我添加一个示例以更好地理解。

In [25]: grouped_data
Out[25]: 
                                     Yield
monthyear Facility Date                   
Dec 15    CCM2     2015-12-01  2550.000000
Feb 16    CCM2     2016-02-01  4250.000000
Jan 16    CCM1     2016-01-01  1540.000000
          CCM2     2016-01-01  6800.000000
Nov 15    CCM1     2015-11-01   921.458157
          CCM2     2015-11-01  1750.310038
Sep 15    CCM2     2015-09-01  5191.197065


In [27]: grouped_data1
Out[27]: 
                               Planned
monthyear Facility Date               
Nov 15    CCM1     2015-11-01    880.0
          CCM2     2015-11-01   3000.0
Sep 15    CCM2     2015-09-01   8000.0

Now merging these two dataframes using pd.concat() 现在使用pd.concat()合并这两个数据帧

In [28]: result = pd.concat([grouped_data,grouped_data1],axis=1)

In [29]: result
Out[29]: 
                                     Yield  Planned
monthyear Facility Date                            
Dec 15    CCM2     2015-12-01  2550.000000      NaN
Feb 16    CCM2     2016-02-01  4250.000000      NaN
Jan 16    CCM1     2016-01-01  1540.000000      NaN
          CCM2     2016-01-01  6800.000000      NaN
Nov 15    CCM1     2015-11-01   921.458157    880.0
          CCM2     2015-11-01  1750.310038   3000.0
Sep 15    CCM2     2015-09-01  5191.197065   8000.0

You're looking for the pandas.concat() function. 您正在寻找pandas.concat()函数。 Have a look at the documentation here . 这里查看文档。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM