python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pandas实现类似sql中的left join操作

利用pandas如何实现类似sql中的left join操作

作者:slaythedragon

这篇文章主要介绍了利用pandas如何实现类似sql中的left join操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

pandas实现类似sql中的left join操作

使用pandas的merge函数

import pandas as pd
df1 = pd.read_csv(r"1.csv",index_col=0)
df2 = pd.read_csv(r"2.csv",index_col=0)
# on中填写根据哪个字段来进行连接,how为left代表left join
df = pd.merge(df1,df2, on='LocationID',how='left')
# print(df)
# 只取出这些列,组成新的DataFrame,带有col_name
df = df[['LocationName','Description','ActiveFlag','owner name','the location nature']]
# 将列进行重命名
new_col = ['location code', 'location name', 'ActiveFlag','owner name','the location nature']
df.columns = new_col
print(df)
# 导出为csv
df.to_csv(path_or_buf=r"3.csv", encoding="utf_8_sig")

pandas数据拼接操作merge、join、concat

在做数据处理过程中会遇到多个数据集之间进行拼接的操作,这里由于平时都是用的Pandas读取的数据集,所以一般是针对的是DataFrame类型的数据进行拼接操作。

1. merge

用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN。

该函数的典型应用场景是,针对同一个主键存在两张包含不同字段的表,现在我们想把他们整合到一张表里。

在此典型情况下,结果集的行数并没有增加,列数则为两个元数据的列数和减去连接键的数量。

df.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)

参数解释: 

a . 默认以相同的列名进行连接键 

2. join 

拼接列,主要用于索引上的合并,提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

参数解释:

3. concat

可以沿着一条轴将多个对象堆叠到一起

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。

与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates方法

pandas.concat(objs, axis=0, join='outer',
              ignore_index=False, keys=None, levels=None,
              names=None, verify_integrity=False,copy=True)

参数解释:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文