python - Pandas ,按列删除重复 N 次的重复项

标签 python pandas dataframe

<分区>

举个例子:

df = pd.DataFrame({
    'file': ['file1','file1','file1','file1','file2','file3','file4','file4','file4','file4'],
    'text': ['Text1','Text2','Text3','Text4','Text5','Text6','Text7','Text8','Text9','Text10'],
})

我需要删除 'file' 重复 4 次的行,所以在这个例子中我需要删除 file = file1 和 file4 的行

最佳答案

使用GroupBy.transform获取每个组的值计数,因此可能按 boolean indexing 过滤:

df1 = df[df.groupby('file')['file'].transform('size') != 4]

说明:使用 transform 是必要的,在 groupby 之后指定一些列用于计数 - 如果使用 size 如果使用任何列,它的工作方式相同DataFrame 并返回新列(Series),其大小与由计数填充的原始 DataFrame 相同:

print (df.groupby('file')['file'].transform('size'))
0    4
1    4
2    4
3    4
4    1
5    1
6    4
7    4
8    4
9    4
Name: file, dtype: int64

或者使用DataFrameGroupBy.filter - 如果数据量很大,性能应该会更慢:

df1 = df.groupby('file').filter(lambda x: len(x) != 4)

Series.mapSeries.value_counts :

df1 = df[df['file'].map(df['file'].value_counts()) != 4]

print (df)
    file   text
4  file2  Text5
5  file3  Text6

关于python - Pandas ,按列删除重复 N 次的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536380/

相关文章:

python - 如何在 python 中更改 ttk.progressBar 颜色

python - 从列表中获取唯一性作为 Pandas python 中的值

python - 通过仅选择特定列来减去两个数据框

python - 在具有多个相同数据的数据框中取最佳值

python - 根据条件计算组内共享元素的数量

r - for循环的无效因子水平

python - 部署 Python 灵活应用程序引擎,无需入口点,只需 cron 作业

python - Matplotlib:显示 numpy "sparse"数组 - 放大点?

python - 如何检查用户输入是否为 float

python - 在数组中查找单词并在 Pandas 的 Dataframe 中获取它们的索引