如何 Pandas 数据框中的 select 行值出现不止一次
How to select rows in Pandas dataframe where value appears more than once
假设我有 Pandas 数据框,其中包含不同测量属性和相应测量值的列。
ID Parameter Value
0 'A' 4.3
1 'B' 3.1
2 'C' 8.9
3 'A' 2.1
4 'A' 3.9
. . .
. . .
. . .
100 'B' 3.8
如何过滤此数据框以仅包含出现次数超过 X 次的测量值?例如,对于这个数据框,我想获取所有测量值超过 5 次的行(假设只有参数 'A' 和 'B' 出现超过 5 次)以获得如下所示的数据框。
ID Parameter Value
0 'A' 4.3
1 'B' 3.1
3 'A' 2.1
. . .
. . .
. . .
100 'B' 3.8
您可以使用 value_counts
+ isin
-
v = df.Parameter.value_counts()
df[df.Parameter.isin(v.index[v.gt(5)])]
例如,where K = 2
(获取所有超过2个读数的项目)-
df
ID Parameter Value
0 0 A 4.3
1 1 B 3.1
2 2 C 8.9
3 3 A 2.1
4 4 A 3.9
5 5 B 4.5
v = df.Parameter.value_counts()
v
A 3
B 2
C 1
Name: Parameter, dtype: int64
df[df.Parameter.isin(v.index[v.gt(2)])]
ID Parameter Value
0 0 A 4.3
3 3 A 2.1
4 4 A 3.9
使用transform
+ size
with boolean indexing
:
df[df.groupby('Parameter')['Parameter'].transform('size') > 5]
通过使用 filter
df.groupby('Parameter').filter(lambda x : x['Parameter'].shape[0]>=5)
带计数的 Loc 也可以工作
df.loc[df.Parameter.isin((df.groupby('Parameter').size().Value >= 5).index)]
您可以使用 value_counts()
获取 DataFrame 中的行及其原始索引,其中特定列的值通过 Series
操作
出现不止一次
freq = DF['attribute'].value_counts()
items = freq[freq>1].index # items that appear more than once
more_than_1_df = DF[DF['attribute'].isin(items)
more_than_1_df
假设我有 Pandas 数据框,其中包含不同测量属性和相应测量值的列。
ID Parameter Value
0 'A' 4.3
1 'B' 3.1
2 'C' 8.9
3 'A' 2.1
4 'A' 3.9
. . .
. . .
. . .
100 'B' 3.8
如何过滤此数据框以仅包含出现次数超过 X 次的测量值?例如,对于这个数据框,我想获取所有测量值超过 5 次的行(假设只有参数 'A' 和 'B' 出现超过 5 次)以获得如下所示的数据框。
ID Parameter Value
0 'A' 4.3
1 'B' 3.1
3 'A' 2.1
. . .
. . .
. . .
100 'B' 3.8
您可以使用 value_counts
+ isin
-
v = df.Parameter.value_counts()
df[df.Parameter.isin(v.index[v.gt(5)])]
例如,where K = 2
(获取所有超过2个读数的项目)-
df
ID Parameter Value
0 0 A 4.3
1 1 B 3.1
2 2 C 8.9
3 3 A 2.1
4 4 A 3.9
5 5 B 4.5
v = df.Parameter.value_counts()
v
A 3
B 2
C 1
Name: Parameter, dtype: int64
df[df.Parameter.isin(v.index[v.gt(2)])]
ID Parameter Value
0 0 A 4.3
3 3 A 2.1
4 4 A 3.9
使用transform
+ size
with boolean indexing
:
df[df.groupby('Parameter')['Parameter'].transform('size') > 5]
通过使用 filter
df.groupby('Parameter').filter(lambda x : x['Parameter'].shape[0]>=5)
带计数的 Loc 也可以工作
df.loc[df.Parameter.isin((df.groupby('Parameter').size().Value >= 5).index)]
您可以使用 value_counts()
获取 DataFrame 中的行及其原始索引,其中特定列的值通过 Series
操作
freq = DF['attribute'].value_counts()
items = freq[freq>1].index # items that appear more than once
more_than_1_df = DF[DF['attribute'].isin(items)
more_than_1_df