通过匹配一部分行来分割数据帧

2024-10-02 12:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想选择DF的主要部分。例如,给定

id_B, supportProgress
id1, A
id1, A 
id1, A
id1, A
id1, A
id1, B
id1, B

输出为:

id_B, supportProgress
id1, A
id1, A 
id1, A
id1, A
id1, A

我不能应用一个简单的过滤器,因为我不知道supportProgress的值是什么。在另一个DF中,可以是supportProgress=C,C,C,C,D,D,并且,我只想选择对应于C,C,C,C,C的部分

我的想法是做一个df.groupby(['supportProgress'])并选择覆盖len(df)80%以上的部分


Tags: id过滤器dflengroupbyid1supportprogress
2条回答

首先需要^{}

a = df['supportProgress'].value_counts(normalize=True)
print (a)
A    0.714286
B    0.285714
Name: supportProgress, dtype: float64

#get all values by conditions
b = a.index[a > .8]
#if return no value, get all values
b = a.index if b.empty else b
print (b)
Index(['A', 'B'], dtype='object')

#last filter
df = df[df['supportProgress'].isin(b)]
print (df)
  id_B supportProgress
0  id1               A
1  id1               A
2  id1               A
3  id1               A
4  id1               A
5  id1               B
6  id1               B

我不知道80%的数据,但要获取最频繁的supportProgress的数据,可以使用以下方法:

df[df['supportProgress'] == df['supportProgress'].value_counts().index[0]]

相关问题 更多 >

    热门问题