如何根据索引合并两个dataframe
发布网友
发布时间:2022-04-25 19:59
我来回答
共1个回答
热心网友
时间:2022-04-13 04:17
Pandas中的数据结构
Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
Time- Series:以时间为索引的Series。
DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
Panel :三维的数组,可以理解为DataFrame的容器。
在数据处理时,有时候为了数据整合,需要使用合并功能。
数据合并将多个DataFrame合并成一个DataFrame。
import pandas as pd
from pandas import DataFrame
df1=DataFrame({'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']},
index=[0,1,2,3])
df2=DataFrame({'A':['A4','A5','A6','A7'],
'B':['B4','B5','B6','B7'],
'C':['C4','C5','C6','C7'],
'D':['D4','D5','D6','D7']},
index=[4,5,6,7])
df3=DataFrame({'A':['A8','A9','A10','A11'],
'B':['B8','B9','B10','B11'],
'C':['C8','C9','C10','C11'],
'D':['D8','D9','D10','D11']},
index=[8,9,10,11])
frames=[df1,df2,df3]
result=pd.concat(frames)
演示及结果如下
将三个DataFrame合并到一个DataFrame。
使用concat()函数。
以下是其函数的相关参数。
result = pd.concat(frames, keys=['x', 'y', 'z'])
result
result.ix['x']
将其合并后用索引区分来源于不同DataFrame的数据。
df4=DataFrame({'B':['B2','B3','B6','B7'],
'D':['D2','D3','D6','D7'],
'F':['F2','F3','F6','F7']},
index=[2,3,6,7])
result=pd.concat([df1,df4],axis=1)
result=pd.concat([df1,df4],axis=1,join='inner')
concat()默认join参数(default)为outer,为并集(union)
指定为inner时为交集(intersection)