python

当前位置:首页 > Pandas教程 > 当前文章

Pandas教程

concat函数合并DataFrame与Series、添加列操作

2020-06-28 72赞 python中国网
每篇文章努力于解决一个问题!

  pandas.concat()函数可以合并多个df也可以合并df与Series,主要掌握5个参数:

  objs:列表,每个元素是Series或者df

  axis:左右还是上下合并,axis=0为上下合并

  join:对齐方式inner、outer。默认是outer

  sort:version 0.23.0.版本新增的,一般设为False。对齐方式inner会忽略改参数,

  ignore_index:是否忽略掉原来的索引

  我们用一些小案例来学习下concat函数。

  1、默认上下合并,对齐方式为outer,不忽略原来的索引

# -*- coding: utf-8 -*-
import pandas as pd

dict1 = {'城市':['北','上','广','深'],'面积':[100,150,200,300],'天气':['差','中','优','好']}
dict2 = {'城市':['北','上','广','深'],'面积':[100,150,200,300],'人口':['多','多','多','多']}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
print(df1)
print('-----------')
print(df2)

print('-----------')
df = pd.concat([df1,df2],axis=0,sort=False)
print(df)

  城市   面积 天气
0  北  100  差
1  上  150  中
2  广  200  优
3  深  300  好
-----------
  城市   面积 人口
0  北  100  多
1  上  150  多
2  广  200  多
3  深  300  多
-----------
  城市   面积   天气   人口
0  北  100    差  NaN
1  上  150    中  NaN
2  广  200    优  NaN
3  深  300    好  NaN
0  北  100  NaN    多
1  上  150  NaN    多
2  广  200  NaN    多
3  深  300  NaN    多


  2、上下合并,对齐方式为inner,不忽略原来的索引

# -*- coding: utf-8 -*-
import pandas as pd

dict1 = {'城市':['北','上','广','深'],'面积':[100,150,200,300],'天气':['差','中','优','好']}
dict2 = {'城市':['北','上','广','深'],'面积':[100,150,200,300],'人口':['多','多','多','多']}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
print(df1)
print('-----------')
print(df2)

print('-----------')
df = pd.concat([df1,df2],axis=0,join='inner')
print(df)

  城市   面积 天气
0  北  100  差
1  上  150  中
2  广  200  优
3  深  300  好
-----------
  城市   面积 人口
0  北  100  多
1  上  150  多
2  广  200  多
3  深  300  多
-----------
  城市   面积
0  北  100
1  上  150
2  广  200
3  深  300
0  北  100
1  上  150
2  广  200
3  深  300



  3、添加一列Series,对齐方式为outer,不忽略原来的索引

# -*- coding: utf-8 -*-
import pandas as pd

dict1 = {'城市':['北','上','广','深'],'面积':[100,150,200,300],'天气':['差','中','优','好']}
df1 = pd.DataFrame(dict1)
print(df1)

print('-----------')
s = pd.Series(['下','上','中','上'],name='风景')
df = pd.concat([df1,s],axis=1)
print(df)
print('-----注意看,索引顺序变了---')
df = pd.concat([s,df1],axis=1)
print(df)

  城市   面积 天气
0  北  100  差
1  上  150  中
2  广  200  优
3  深  300  好
-----------
  城市   面积 天气 风景
0  北  100  差  下
1  上  150  中  上
2  广  200  优  中
3  深  300  好  上
-----注意看,索引顺序变了---
  风景 城市   面积 天气
0  下  北  100  差
1  上  上  150  中
2  中  广  200  优
3  上  深  300  好


文章评论

concat函数合并DataFrame与Series、添加列操作文章写得不错,值得赞赏