如何根据多个条件估计 Pandas 数据框列值的计数?

How to estimate count for Pandas dataframe column values based on multiple conditions?

给定以下格式的 pandas DataFrame df:-

StudyNo   Condition1      Condition2      ResultVal
1222          25              30              0.5
1245          30              45              0.12
1672          40              15              0.46
1222          25              30              0.95
1245          30              45              0.88
1245          30              45              0.23

我想在给定的 Condition1 和 [=17= 下为特定的 StudyNo 计算数据集中存在的 ResultVal 属性数量的 frequency/count ].此数据集中没有完全重复的行。

例如对于 StudyNo 1245Condition1 of 30Condition2 of 45count 将是 3(因为此方面存在 3 ResultVal 属性)。另外,在 < =1 ResultVal 属性的情况下,我想打印出 StudyNoCondition1Condition2 的列表存在(在本例中为 [1672,40,15].

在这方面的任何帮助将不胜感激。

您可以groupby“StudyNo”、“Condition1”和“Condition2”并转换count“ResultVal”以创建列“Frequency”。

然后为“Frequency”小于或等于1的行创建一个布尔掩码并过滤满足它的行。

cols = ['StudyNo','Condition1','Condition2']
df['Frequency'] = df.groupby(cols)['ResultVal'].transform('count')
appears_only_once = df.loc[df['Frequency'] <= 1, cols].to_numpy().tolist()

输出:

   StudyNo  Condition1  Condition2  ResultVal  Frequency
0     1222          25          30       0.50          2
1     1245          30          45       0.12          3
2     1672          40          15       0.46          1
3     1222          25          30       0.95          2
4     1245          30          45       0.88          3
5     1245          30          45       0.23          3

榜单:

[[1672, 40, 15]]