找到一行及其索引,然后使用索引

时间:2019-05-30 15:40:18

标签: python pandas

我将寻找一种逐步删除特定行的方法。

      categorie     note    nbavis  taille      nbdll       type    prix    genre
10  ART_AND_DESIGN  4.1     159     19000000    10000       Free    0       Art & Design
15  ART_AND_DESIGN  3.9     967     14000000    500000      Free    0       Art & Design
16  ART_AND_DESIGN  4.7     87510   8.7000000   5000000     Free    0       Art & Design
17  ART_AND_DESIGN  4.5     215644  25000000    50000000    Free    0       Art & Design
28  ART_AND_DESIGN  4.3     967     2.8000000   100000      Free    Everyone Art & Design

由于NaN删除某些行后,id与索引不同。 因此,我使用了:

app.loc[app['prix']=='Everyone',:]

要详细了解“ prix”列中的哪一行包含“所有人”。

现在,我想找到与28不同的该行的索引(在此示例中,它是4,python计数从0​​开始吧?)

我尝试过:

app.index[app['prix'] == 'Everyone'].tolist()

但是结果给了我[28]。 然后我尝试了

app.loc[app.index==28]

相同的结果。 app.index [28]会告诉我:

IndexError: index 28 is out of bounds for axis 0 with size 5

我很确定我错过了一些东西。有很多方法可以做到,但是我想用这种方法来做到。例如.dropdel,... 有很多主题,但没有一个适合这些条件。也许不可能。几行代码怎么办?

谢谢

编辑: 有我一直在寻找的解决方案:

♣重置索引

app = app.reset_index()

♣查找行(和索引)

app.loc[app['prix']=='Everyone',:]

♣使用索引删除该行

app = app.drop(4795)

◘其他解决方案是:app.drop([28]) 感谢这个社区。并且感谢您对我的主题的编辑,我的英语太糟糕了。

4 个答案:

答案 0 :(得分:0)

假设您要排除prix等于“所有人”的行。

new_df = app.loc[app['prix']!='Everyone']

new_df是应用程序的一部分。您可以使用复制将其设为新对象

new_df = app.loc[app['prix']!='Everyone'].copy()

答案 1 :(得分:0)

要将行放到位:

app.drop(app[app['prix']=='Everyone'].index, inplace=True)

答案 2 :(得分:0)

尝试一下:

for r in app.iterrows():
     if r[1]['prix']=='Everyone':
           print(r[0])

使用iterrows()方法,您可以按r [0]打印索引,列将位于r [1]中, 如果希望将列设置为索引,则可以使用:

app.set_index("Column Name")

答案 3 :(得分:0)

28是数据帧的行标识符。它最初是(在您删除NA之前)第28行(由于基于零的索引,我认为是第29行)。您可以根据该ID删除行。

app.drop([28])