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

2024-05-19 10:09:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我会寻找一种方法,基本上删除,一步一步,一个特定的行。你知道吗

      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”列中哪一行包含“Everyone”的更多信息。你知道吗

现在我想找到这一行的索引,它不同于28(在这个例子中,它是4,python从0开始计数,对吗?)你知道吗

我试过:

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

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

app.loc[app.index==28]

同样的结果。 应用索引[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]) 感谢这个社区。谢谢你编辑我的主题,我的英语很糟糕啊哈。你知道吗


Tags: and方法appfree编辑index解决方案loc
3条回答

试试这个:

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

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

app.set_index("Column Name")

假设要排除prix等于“everybody”的行

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

新的df是应用程序的一部分。您可以使用“复制”使其成为新对象

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

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

app.drop([28])

相关问题 更多 >

    热门问题