我将寻找一种逐步删除特定行的方法。
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
我很确定我错过了一些东西。有很多方法可以做到,但是我想用这种方法来做到。例如.drop
,del
,...
有很多主题,但没有一个适合这些条件。也许不可能。几行代码怎么办?
谢谢
编辑: 有我一直在寻找的解决方案:
♣重置索引
app = app.reset_index()
♣查找行(和索引)
app.loc[app['prix']=='Everyone',:]
♣使用索引删除该行
app = app.drop(4795)
◘其他解决方案是:app.drop([28])
感谢这个社区。并且感谢您对我的主题的编辑,我的英语太糟糕了。
答案 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])