我有一個推文資料集,其中包含主要來自英語的推文,但也有幾條印度語言的推文(例如旁遮普語、印地語、泰米爾語等)。我只想保留英語推文并洗掉具有不同語言推文的行。我試過這個 [https://stackoverflow.com/questions/67786493/pandas-dataframe-filter-out-rows-with-non-english-text] 并且它適用于示例資料集。但是,當我在我的資料集上嘗試它時,它顯示錯誤:
LangDetectException: No features in text.
另外,我已經檢查了其他問題 [https://stackoverflow.com/questions/69804094/drop-non-english-rows-pandasand],其中接受的答案談到了這個錯誤,并提到空行可能是原因錯誤,所以我已經清理了我的資料集以洗掉所有空行。
適用于樣本資料但不適用于原始資料的簡單代碼:
from langdetect import detect
import pandas as pd
df = pd.read_csv('Sample.csv')
df_new = df[df.text.apply(detect).eq('en')]
print('New df is: ', df_new)
如何檢查哪一行產生錯誤?
提前致謝!
uj5u.com熱心網友回復:
True如果函式detect失敗,使用自定義函式回傳:
df = pd.read_csv('Sample.csv')
def f(x):
try:
detect(x)
return False
except:
return True
s = df.loc[df.text.apply(f), 'text']
另一個想法是創建新列填充detect,如果回傳失敗NaN,最后過濾具有缺失值的行,df1并且還df_new使用函式輸出填充的新列detect:
df = pd.read_csv('Sample.csv')
def f1(x):
try:
return detect(x)
except:
return np.nan
df['new'] = df.text.apply(f1)
df1 = df[df.new.isna()]
df_new = df[df.new.eq('en')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441277.html
標籤:python-3.x 熊猫 数据框 推特
上一篇:根據多列的值計算統計資訊
