首页 > 解决方案 > Python Pandas Dataframes:不能有条件地删除行,总是在意外时删除整个数据集

问题描述

两个多小时以来,我一直无法解决这个问题。我发现了似乎解决方案的每一个变体,但它们似乎都不起作用。不过,这可能是因为我每天要睡四个小时。无论如何,我想做的是有条件地从熊猫数据框中删除行。数据框来自流行的 youtube 视频 CSV。其中一列是“category_id”。

我正在尝试删除所有没有数字 25 或 43 的类别。每次我这样做时,整个数据集都会减少到 0 行。我知道您在想什么,是否存在甚至具有类别 25 或 43 的行?是的!他们是这样!

我真正认为可行的解决方案如下:

df.drop(df[df.category_id != 25].index, inplace=True)
df.drop(df[df.category_id != 43].index, inplace=True)

但后来我检查了那个数据框,它是空的。如何解决这个问题?

标签: pythonpandasdataframe

解决方案


df = pd.DataFrame( {'category_id': [12, 14, 25, 7, 29, 43, 22, 95]} )
df
        category_id
   0    12
   1    14
   2    25
   3    7
   4    29
   5    43
   6    22
   7    95

   df.drop( list(df[ ~ df['category_id'].isin([25, 43])].index), \
                 inplace = True, axis = 0)
   df

   category_id
   2    25
   4    43

推荐阅读