目录:
橘猫吃不胖:pandas回顾小结(二)zhuanlan.zhihu.com数据合并
DataFrame.merge
(
right,
how='inner',
on=None,
left_on=None,
right_on=None,
left_index=False,
right_index=False,
sort=False,
suffixes='_x', '_y',
copy=True,
indicator=False,
validate=None)
这个函数,类似于SQL中的JOIN,也就是关联查询,就是将两个DataFrame进行合并
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
'value': [1, 2, 3, 5]})
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
'value': [5, 6, 7, 8]})
上面是我们的基础数据,现在试试这个merge函数的使用
df1.merge(df2, left_on='lkey', right_on='rkey' )
我们指定了连个DataFrame关联的字段,默认的话, 是inner,相当于是内关联
还有一个类似的函数:
DataFrame.join
(
other,
on=None,
how='left',
lsuffix='',
rsuffix='',
sort=False)
如果是使用index来关联合并数据的话, 使用join更为合适
df1 = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame({'c':[8,8], 'd':[9,9]})
df1.join(df2)
数据拼接
pandas.concat
(
objs:Union[Iterable[‘DataFrame’], Mapping[Label, ‘DataFrame’]],
axis='0',
join:str="'outer'",
ignore_index:bool='False',
keys='None',
levels='None',
names='None',
verify_integrity:bool='False',
sort:bool='False',
copy:bool='True')→ ’DataFrame’
在某个轴上,将数据直接怼上去,按照行或者列进行拼接
df1 = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame({'c':[8,8], 'd':[9,9]})
pd.concat([df1, df2])
默认是在index上进行拼接,index的索引也是拼接的,我们可以使用参数,忽略重置索引
pd.concat([df1, df2], ignore_index=True)
也可以按照column进行拼接,这时拼接的时候,会按照index进行一步整合
pd.concat([df1, df2] , axis=1)
df3 = pd.DataFrame({'c':[8,8], 'd':[9,9]}, index=[8,9])
pd.concat([df1, df3])