我有以下数据:
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_SH
中data_SP
个元素的出现次数。换句话说,data_SH.['Id#SH']
中的每个data_SP
中的每个元素重复了多少
作为实例:
SH11 = 2
SH12 = 2
SH13 = 4
答案 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)
答案 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()