在 Pandas 中计算共同元素出现的次数

3

我有以下数据:

data_SP = pd.read_csv(path_ServicePath, sep='\t', header=None)
data_SP.columns = ["Id#SP"]
print(data_SP)

    IdSP
0   SH11
1   SH11
2   SH12
3   SH12
4   SH13
5   SH13
6   SH13
7   SH13
... ...

而且,

data_SH = pd.read_csv(path_ServiceHierarchy,sep='\t',header=None)
data_SH.columns = ["Id#SH", "ConnectionClient"]
print(data_SH)
IdSH    ConnectionClient
0   SH11    CN01207507
1   SH12    CN01207509
2   SH13    CN01207539
3   SH14    CN01207542
4   SH15    CN01207564
... ...

实际上,我想计算data_SP中出现data_SH元素的次数。换句话说,data_SH. ['Id#SH']中的每个单独的元素在data_SP中重复了多少次。

例如:

SH11 = 2
SH12 = 2
SH13 = 4
3个回答

3

使用Series.where+ Series.isin过滤在IDSH中存在的IdSP值,然后使用value_counts计算出现次数:

data_SP['IdSP'].where(lambda x: x.isin(data_SH['IdSH'])).value_counts()

另外,您还可以使用 value_countsreindex 方法:

data_SP['IdSP'].value_counts().reindex(data_SH['IdSH']).dropna()

IdSH
SH11    2.0
SH12    2.0
SH13    4.0
Name: IdSP, dtype: float6

2

1
这会给出计数,但无法得出在data_sh中存在而在data_SP中不存在的元素数量。
    data_SP = pd.read_csv(path_ServicePath, sep='\t', header=None)
    data_SP.columns = ["Id#SP"]
    data_SP["count"] = [1]*len(df)
    data_SP=data_SP.groupby("Id#SP").count()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接