Pandas下降行为

2024-05-23 17:10:05 发布

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

我刚刚试着在这里回答另一个问题,然后遇到了一个使用pd.drop过滤数据帧的问题。下面是我举的例子:

import pandas as pd
import langdetect
df = pd.DataFrame({'Sentence':['es muy bueno','run, Forest! Run!','Ήξερα ότι θα εξετάζατε τον Μεταφραστή Google', 'This is Certainly en']})
df['Language'] = df['Sentence'].apply(lambda x: langdetect.detect(x))
# output
                                       Sentence Language
0                                  es muy bueno       es
1                             run, Forest! Run!       ro
2  Ήξερα ότι θα εξετάζατε τον Μεταφραστή Google       el
3                          This is Certainly en       en

现在我想删除语言不是en的所有行。使用df.drop(df['Language'] != 'en')时,它意外返回:

                                       Sentence Language
2  Ήξερα ότι θα εξετάζατε τον Μεταφραστή Google       el
3                          This is Certainly en       en

但是,当我使用布尔索引时,它会返回:

df['Language'] != 'en'
# output 

0     True
1     True
2     True
3    False
Name: Language, dtype: bool

现在,我可以用df.loc[df['Language'] == 'en']来解决这个问题。但我想知道为什么drop会这样,或者我做错了什么?你知道吗


Tags: importtruedfesisgooglethislanguage
2条回答

Pandasdrop采用索引或列标签

labels : single label or list-like

Index or column labels to drop.

当你将以下内容传递给测向下降在默认轴(即0)上,其删除行0和1-对应于False(0)和True(1)

df['Language'] != 'en'

0     True
1     True
2     True
3    False

虽然可以用测向下降在@Wen的回答中,最惯用的方法是使用布尔索引或测向查询你知道吗

^{}需要indexcolumn标签

df.drop(df.index[(df['Language'] != 'en')])
Out[303]: 
            Sentence Language
3  ThisisCertainlyen       en

相关问题 更多 >