python - 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() 但无法获得预期值。有人教我怎么做。
解决方案
尝试使用条件进行布尔索引==
,然后使用value_counts
,reindex
和to_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}