我有一个像这样的数据框:
d = {'col1': [1, 2, 3, 4, 5, 1, 2, 3, 6], 'col2': ['a', 'b', 'a', 'c', 'd', 'b', 'e', 'e', 'e']}
df = pd.DataFrame(data=d)
我想看看col1
如何映射到col2
,反之亦然。
我可以获取groupby计数,以查看两列中每个元素映射到多少个元素
df.groupby('col1')['col2'].count().sort_values(ascending=False)
col1
3 2
2 2
1 2
6 1
5 1
4 1
df.groupby('col2')['col1'].count().sort_values(ascending=False)
col2
e 3
b 2
a 2
d 1
c 1
是否有很好的方法查看col1
的哪些元素与col2
的元素重叠?
例如,在col1
中,1
和2
都映射到b
中的col2
。
输出可以是col1
中每个元素的重叠数量的计数,也可以是与其重叠的元素的列表
结果:
d = {'col1': [1, 2, 3, 4, 5, 6], 'col2': [[2, 3], [1], [1, 2, 6], [], [], [1,2] ]}
overlap = pd.DataFrame(data=d)
答案 0 :(得分:0)
您可以只用groupby
做agg
df.groupby('col2').col1.agg(list)
Out[21]:
col2
a [1, 3]
b [2, 1]
c [4]
d [5]
e [2, 3, 6]
Name: col1, dtype: object
答案 1 :(得分:0)
尝试在您的Jupyter笔记本中运行此代码;我认为这就是您想要获得的输出。它为col2中的每个唯一值提供col1计数。
for element in df.col2.unique():
print(element, '\n', df.where(df.col2 == element).col1.value_counts())
其中输出是col1 /字母计数的元素:
a
3 1
1 1
Name: col1, dtype: int64
b
1 1
2 1
Name: col1, dtype: int64
c
4 1
Name: col1, dtype: int64
d
5 1
Name: col1, dtype: int64
e
6 1
3 1
2 1
Name: col1, dtype: int64