首页 > 解决方案 > Pandas 数据框列匹配和分组依据

问题描述

我有两个数据框 A 和 B 如下:

A = [1,2,3,2,1,3]
B = [1,3,3,1,1,3]

我想将数据帧 A 的每个值与 B 匹配并计算匹配值,例如,同一行中共有 2 行值为 1,同一行中有 0 行值为 2,同一行中有 2 行值为 3。

I want output as below:
Value - > Count
1 -> 2
2 -> 0
3 -> 2

我尝试了以下代码,但它只显示匹配行的 true 和 false。

print(A.isin(B))
Output:
True
False
True
False
True
True

我厌倦了使用 .count() 和 .value_count() 但无法获得预期值。有人教我怎么做。

标签: pythonpandas

解决方案


尝试使用条件进行布尔索引==,然后使用value_counts,reindexto_dict:

A = pd.DataFrame([1,2,3,2,1,3])
B = pd.DataFrame([1,3,3,1,1,3])

d = A[A == B][0].value_counts().reindex(A[0].unique(), fill_value=0).to_dict()
print(d)

[出去]

{1: 2, 2: 0, 3: 2}

推荐阅读