欢迎光临散文网 会员登陆 & 注册

pandas合并/连接实例:社交网站Meetup成员信息、某餐厅销售额

2023-07-31 16:19 作者:矢来美羽MIUYARAI  | 我要投稿

一张表(数据集DataFrame)中除了主键,和其他表建立联系后还会有外键,能够引用其他表中的内容。

社交网站Meetup成员信息:https://pan.baidu.com/s/1C_T9m7CVeXEdEADYbahMHg?pwd=1234

1. 数据集的导入

可见group1和group2其实是相同类型的数据集,可进行合并:pd.concat(objs = [列表]),按照传给objs参数的列表中的顺序进行连接(默认保留原始的索引

也可以忽略旧的数字索引,采用新的数字索引:ignore_index = True

使用多级索引:保留原始的索引

16330 = 7999 + 8331

2. 缺失值

遇到新的列名会自动创建,缺失值设为NaN。遇到旧的列名则合并。

遇到新的行名会自动创建,缺失值设为NaN。但是遇到旧的行名也会自动创建

也就是说,pd.concat(objs = [列表])是倾向于纵向连接表格的。如果要横向:

3. 左/内/外连接

左/内/外

左连接:旧数据不变,新数据输入作为补充,新数据没有的就是空

对groups数据集执行how = "left"的连接,依据on = "category_id",连接categories数据集

输出行16330,与groups相同:

内连接:新数据输入后,只保留和旧数据匹配的行

对groups数据集执行how = "in"的连接,依据on = "category_id",连接categories数据集

因为有的category_id没有category_name,name不再有NaN,而是直接删掉了,输出行只有8037:

外连接:新数据输入作为补充,新数据没有的就是空;如果新数据有、旧数据没有的,旧数据处是空

对groups数据集执行how = "outer"的连接,依据left_on = "city_id", right_on = "id"(因为两处on的名称不对应,因此手动匹配),连接cities数据集

输出行16334,比groups的16330多,可见最后的cities在groups中没能匹配上,旧数据处是空:

用_merge记录数据的左/右包含:indicator = True

输出right_only的那4行:

4. 索引标签的情况

如果依据的标签on = "city_id"是索引标签

则将right_on = "id"修改为right_index = True:(left同理)

pandas合并/连接实例:社交网站Meetup成员信息、某餐厅销售额的评论 (共 条)

分享到微博请遵守国家法律