Python数据框删除出现频率较低的行

Mai*_*and 2 python dataframe pandas pandas-groupby

我有一个数据框,其中重复出现的行具有不同的名称。我想删除较少出现的行。我的数据框非常大。我这里只提供小尺寸。

数据框:

df = 
         name     value
    0      A      10
    1      B      20
    2      A      30
    3      A      40
    4      C      50
    5      C      60
    6      D      70
Run Code Online (Sandbox Code Playgroud)

在上面的数据帧中,B 和 D 行出现的次数较少。小于 1。我想删除/删除所有出现次数小于 2 的此类行。

我的代码:

##### Net strings
net_strs = df['name'].unique().tolist()
strng_list = df.group.unique().tolist()
tempdf = df.groupby('name').count()
##### strings that have less than 2 measurements in whole data set
lesstr = tempdf[tempdf['value']<2].index
##### Strings that have more than 2 measurements in whole data set
strng_list = np.setdiff1d(net_strs,lesstr).tolist()
##### Removing the strings with less measurements
df = df[df['name']==strng_list]
Run Code Online (Sandbox Code Playgroud)

我目前的输出:

ValueError: Lengths must match to compare
Run Code Online (Sandbox Code Playgroud)

我的预期输出:

         name     value
    0      A      10
    1      A      30
    2      A      40
    3      C      50
    4      C      60
Run Code Online (Sandbox Code Playgroud)

Sur*_*ian 6

您可以找到名称中每个元素的计数,然后仅选择名称多次出现的行。

v = df.name.value_counts()
df[df.name.isin(v.index[v.gt(1)])]
Run Code Online (Sandbox Code Playgroud)

输出 :

    name    value
0   A   10
2   A   30
3   A   40
4   C   50
5   C   60
Run Code Online (Sandbox Code Playgroud)