《爱上Pandas》系列-你还在用VLookup吗?
2020,努力做一个无可替代的人!
作者|小一
全文共2609字,阅读全文需11分钟
写在前面的话
最后一篇系列文章,请珍惜潘大师最后的美好时光
正文
append:提供了行方向(堆叠行)的拼接操作
join:提供了列方向(拼接列)的拼接操作,支持左联、右联、内联和外联四种操作类型
concat:通过行拼接(增加行)或列拼接(增加列)进行内联或外联拼接操作
merge:类似于SQL数据库操作,支持左联、右联、内联和外联等四种SQL操作类型
append 操作
行方向的拼接操作,实现堆叠行的效果
数据格式都一样,每天一份数据,要进行汇总处理
append(self, other, ignore_index=False, sort=None):
other:另一个或多个df
ignore_index:若为True,则对index重新索引
sort:若为True,则根据列标签对列排序
df_append_data1 = pd.DataFrame(
np.arange(8).reshape(2, 4),
columns=['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
)
# 输出
zhangsan lisi wangwu zhaoliu
0 0 1 2 3
1 4 5 6 7
df_result = df_append_data1.append(df_append_data1)
# 输出
zhangsan lisi wangwu zhaoliu
0 0 1 2 3
1 4 5 6 7
0 0 1 2 3
1 4 5 6 7
那如果是多个DataFrame 合并呢?
df_result = df_append_data1.append([df_append_data1, df_append_data1], ignore_index=True)
# 输出
zhangsan lisi wangwu zhaoliu
0 0 1 2 3
1 4 5 6 7
2 0 1 2 3
3 4 5 6 7
4 0 1 2 3
5 4 5 6 7
concat 操作
行拼接或列拼接的操作,实现增加行或增加列的效果
内联:两个数据集的交集
外联:交个数据集的并集
concat 的函数是这样的:(只列举部分重要参数)
concat(objs, axis=0, join=‘outer’, ignore_index=False,...)
axis:拼接轴方向,默认为0,按行拼接
join:连接方式,默认外联(outer)
ignore_index:若为True,则对index进行索引
关于axis 这个概念可能刚开始大家会记混,我说下自己的记忆方法:
axis=0,按行拼接,新增行数据
asix=1,按列拼接,新增列数据
关于join 内联、外联的两种方式,我画个图你们看一下(记住这个图)
内联:C部分(去重后)即:交集
外联:A+B+C部分(去重后)即:并集
df_concat_data_1 = pd.DataFrame(
[['zhangsan', 90, 88], ['lisi', 91, 92]],
columns=['Name', 'Maths', 'English']
)
df_concat_data_2 = pd.DataFrame(
[['zhangsan', 90, 75], ['zhaoliu', 58, 99]],
columns=['Name', 'Maths', 'Python']
)
# concat 操作
df_result = pd.concat([df_concat_data_1, df_concat_data_2], join='outer', axis=0, ignore_index=True)
# 输出
English Maths Name Python
0 88.0 90 zhangsan NaN
1 92.0 91 lisi NaN
2 NaN 90 zhangsan 75.0
3 NaN 58 zhaoliu 99.0
merge 操作
类似于SQL数据库操作,实现不同数据表的数据匹配的效果
pd.merge(df_concat_data_1, df_concat_data_2, how='outer', on='Name'
# 输出
Name Maths_x English Maths_y Python
0 zhangsan 90.0 88.0 90.0 75.0
1 lisi 91.0 92.0 NaN NaN
2 zhaoliu NaN NaN 58.0 99.0
left、right:两个要合并的DataFrame
how:两个DataFrame 的连接方式,默认为inner,还有 outer、left、right三种
on:用于连接的列名称,若未指定,默认以两个DataFrame 的列名交集为连接键
left_on:左侧DataFrame 用于连接的列名
right_on:右侧DataFrame 用于连接的列名
left_index:使用左侧DataFrame 的行索引作为连接键
right_index:使用右侧DataFrame 的行索引作为连接键
sort:默认为True,将合并的数据进行排序
suffixes:指定左右DataFrame 存在相同列名时的后缀显示
解释一个,连接方式中多了left、right 两种连接。还记得上面的图吗?
inner:C部分(去重后)
outer:A+B+C部分(去重后)
left:A部分+(C部分)
right:B部分+(C部分)
总结一下:
数据表连接匹配
有多少人在用Excel 做数据匹配的时候电脑卡死?只是因为他们不会今天的这些内容
append:提供了行方向的拼接操作
concat:通过行拼接或列拼接进行内联或外联操作
merge:类似于SQL数据库操作,支持全四种连接类型
写在后面的话
暖男
在此谢过!好巧啊,你也读到这了!
点个
在看
让小一看到你