2020-10-21 pandas - tables关系

本文详细介绍了Pandas库在数据处理中的各种操作,包括如何使用innerjoin进行数据合并,利用merge函数进行多个表格的拼接,实现leftjoin、rightjoin以及outerjoin。此外,还探讨了semi-join和anti-join的概念及其应用。通过示例展示了如何查找并过滤缺失值,以及如何进行数据的上下拼接。同时,讲解了计算相关性的方法、merge_asof函数的用法,并展示了如何使用类似SQL的query方法筛选数据。此外,提到了如何在数据操作中保持特定列不变的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas

Q: inner join用什么?

# df1, df2
df1.merge(df2, on='xxx', suffixes=('_aaa', '_bbb'))

Q: 多个tables拼接如何?

# df1, df2, df3
df1.merge(df2, on=['xxx', 'yyy']) /
.merge(df3, on='zzz', suffixes=(...))

Q: left join 怎么搞?

df.merge(df2, on='xxx', how='left')

Q: right join又怎么搞?

df1.merge(df2, how='right',
		left_on='l_id', right_on='r_id')

Q: outer join是个什么鬼?
在这里插入图片描述
在这里插入图片描述

df1.merge(df2, on='xxx', how='outer', suffixes=('_x', '_y'))

Q: 这个怎么搞?
在这里插入图片描述

#先outer
iron_1_and_2 = iron_1_actors.merge(iron_2_actors, on='id', how='outer', suffixes=('_1', '_2'))
#再找NaN,null
m = ((iron_1_and_2['name_1'].isnull()) | 
     (iron_1_and_2['name_2'].isnull()))
#filter出null的
print(iron_1_and_2[m].head())

Q: semi-join是啥子?anti-join 呢?
在这里插入图片描述
对比与inner join,table并没有合并。
在这里插入图片描述
anti-join

# Merge employees and top_cust
empl_cust = employees.merge(top_cust, on='srid', 
                                 how='left', indicator=True)
#这个indicator就会显示出该row是来自于left还是right还是both,有一个判别功能。column名为 _merge
# Select the srid column where _merge is left_only
#选择leftonly就是把没有拼接到table2的项目都找出来了。
srid_list = empl_cust.loc[empl_cust['_merge'] == 'left_only', 'srid']

# Get employees not working with top customers
print(employees[employees['srid'].isin(srid_list)])

semi-join

# 1st inner join first,找出共性
df_merge = df1.merge(df2, on='id')

# filter
df_common_list = df1['id'].isin(df_merg['id'])

# select
df1[df_common_list]

Q: 两个tables如何上下拼接?

# df1, df2, df3
df_concat = pd.concat([df1, df2, df3], ingore_index=True)

Q: 如何找correlation?

xxx.corr()

Q: merge_asof()怎么用
在这里插入图片描述
在这里插入图片描述
Q: 像使用sql语句的是什么?

xxx.query('name == "aaa" or (age>100 and sex=="male")')

Q:
在这里插入图片描述
id_vars==>是这两个columns不变的情况
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值