查看dataframe两列之间的对应关系

对应大的csv文件,要查看特定两列之间的对应关系似乎并没有可以直接调用的函数(可能自己了解的很有限)。研究了下,结合groupby函数和nunique方法可以完成。

如下:

import pandas as pd

# 创建一个DataFrame对象
df = pd.DataFrame({
    'id': ['A', 'A', 'B', 'B', 'B','C','C','C'],
    'num': ['X', 'Y', 'X', 'Y', 'Z','Z','Z','Z'],
    'sub_id': [1, 2, 3, 4, 5,7,8,9]
})
df
  id num sub_id
0	A	X	1
1	A	Y	2
2	B	X	3
3	B	Y	4
4	B	Z	5
5	C	Z	6
6	C	Z	7
7	C	Z	8
# 对DataFrame对象进行分组
grouped = df.groupby(['id', 'num']).size()

# 将groupby对象转换为DataFrame对象
df_grouped = grouped.reset_index(name='count')

# 打印DataFrame对象
df_grouped
	id num	count
0	A	X	1
1	A	Y	1
2	B	X	1
3	B	Y	1
4	B	Z	1
5	C	Z	3
print(df_grouped.shape)
print(df_grouped['id'].nunique())
print(df_grouped['num'].nunique())
(6,3)
3
3

最后两列的nunique都比df_grouped的列数要少的话则两列之间是多对多关系,某列的nunique和df_grouped的列数一致而另一列要少的话,少的那列是有一对多的。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值