如何根据多个条件估计 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
1245 在 Condition1
of 30 和 Condition2
of 45,count
将是 3(因为此方面存在 3 ResultVal
属性)。另外,在 < =1 ResultVal
属性的情况下,我想打印出 StudyNo
、Condition1
和 Condition2
的列表存在(在本例中为 [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]]
给定以下格式的 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
1245 在 Condition1
of 30 和 Condition2
of 45,count
将是 3(因为此方面存在 3 ResultVal
属性)。另外,在 < =1 ResultVal
属性的情况下,我想打印出 StudyNo
、Condition1
和 Condition2
的列表存在(在本例中为 [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]]