首页 > 解决方案 > 如何根据索引库删除 df 行?

问题描述

我有这个df:

question=pd.DataFrame()
question['Area']=['Miami','Miami','NYC','Dallas','Dallas','Dallas']
question['Venues']=['Margaritas','Salsa Club','Ginos','7Eleven','Laser Tag','Starbucks']
question
    Area    Venues
0   Miami   Margaritas
1   Miami   Salsa Club
2   NYC     Ginos
3   Dallas  7Eleven
4   Dallas  Laser Tag
5   Dallas  Starbucks

我想删除少于 3 个场地的每个区域,因为我使用 groupby 获取索引:输入

index_names=question.groupby('Area').count()[question.groupby('Area').count()['Venues']<3].index
index_names

输出

Index(['Miami', 'NYC'], dtype='object', name='Area')

我现在如何删除“区域”对应于 index_names 中存储的值的所有行?我试过这个:

for i in index_names
  question.drop(question['Area']==index_names[i].index, inplace=True)

收到以下错误:

 File "<ipython-input-113-f64dcfe81656>", line 1
    for i in index_names
                        ^
SyntaxError: invalid syntax

标签: pythonpandasloops

解决方案


首先,您错过:for行尾:

for i in index_names:
#                   ^--- this

其次,您可以使用isin

question[~question['Area'].isin(index_names)]

推荐阅读