![84a023ef30d8986f30e066c17d10ded7.png](https://i-blog.csdnimg.cn/blog_migrate/4212f8c11c5b98c5481afedad82c26ad.jpeg)
目录:
橘猫吃不胖:pandas回顾小结(二)zhuanlan.zhihu.com![73e2ca49ad518efd95f7f0b8e388d172.png](https://i-blog.csdnimg.cn/blog_migrate/934ffc53728112fb5654bcc95283f26f.jpeg)
![73e2ca49ad518efd95f7f0b8e388d172.png](https://i-blog.csdnimg.cn/blog_migrate/934ffc53728112fb5654bcc95283f26f.jpeg)
数据合并
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]})
![5acb7cae14361086bae36477eb1aead1.png](https://i-blog.csdnimg.cn/blog_migrate/c8cc5292d5c378695809b40b23e1a39a.jpeg)
上面是我们的基础数据,现在试试这个merge函数的使用
df1.merge(df2, left_on='lkey', right_on='rkey' )
![fa3817776d2fb4c94a93994b36be8199.png](https://i-blog.csdnimg.cn/blog_migrate/b836ba4f98f7274dc07da790af85d0b7.jpeg)
我们指定了连个DataFrame关联的字段,默认的话, 是inner,相当于是内关联
![ac1224da285784669a1cbbbb59b22d8a.png](https://i-blog.csdnimg.cn/blog_migrate/da33829d658bde34731f856cb77bb444.jpeg)
还有一个类似的函数:
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)
![95ec981b4de886e8a6be7c57146f115d.png](https://i-blog.csdnimg.cn/blog_migrate/e0e2b4085f645a471d3c221af3808064.jpeg)
数据拼接
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]})
![1d02cceea56105a429e7523634a1f9ae.png](https://i-blog.csdnimg.cn/blog_migrate/017df8038a30c9a750e2781f28204dac.jpeg)
pd.concat([df1, df2])
![39f8983c36328235fb7086322d107e03.png](https://i-blog.csdnimg.cn/blog_migrate/0f4977d2df93fc2bcfbd69cdb64dea97.jpeg)
默认是在index上进行拼接,index的索引也是拼接的,我们可以使用参数,忽略重置索引
pd.concat([df1, df2], ignore_index=True)
![9e58653a529d09fbb3f92dc122609e7b.png](https://i-blog.csdnimg.cn/blog_migrate/db9da8aa8b9f82d3e5e53634e82f048c.jpeg)
也可以按照column进行拼接,这时拼接的时候,会按照index进行一步整合
pd.concat([df1, df2] , axis=1)
![d06160d25f36ce098738a0bdcf93be88.png](https://i-blog.csdnimg.cn/blog_migrate/b969c9268c5b51d9a272c3aedb56ff5a.jpeg)
df3 = pd.DataFrame({'c':[8,8], 'd':[9,9]}, index=[8,9])
pd.concat([df1, df3])
![9e177f5c6c9dd8eb7232c085c457741e.png](https://i-blog.csdnimg.cn/blog_migrate/9d226ae554c62382c5b035c55656d3a9.jpeg)