计算熊猫中常见元素的出现次数

时间:2020-10-04 16:51:18

标签: python pandas

我有以下数据:

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_SHdata_SP个元素的出现次数。换句话说,data_SH.['Id#SH']中的每个data_SP中的每个元素重复了多少 作为实例:

SH11 = 2
SH12 = 2
SH13 = 4

3 个答案:

答案 0 :(得分:3)

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

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

或者,您也可以执行value_counts + reindex

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

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

答案 1 :(得分:2)

计算列中值的最佳方法如下:

data_SH.value_counts()

另请参阅this question on SO

答案 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()