这是我的尝试:
df['occupation']= df['occupation'].str.replace('?', '') df.dropna(subset=['occupation'], inplace=True)
但它不工作,我如何删除所有的行的职业列,我读了一个csv文件,其中包含一个?而不是一个职业
4sup72z81#
如果你用pd.read_csv()阅读csv,你可以传递na_values。
pd.read_csv()
na_values
# to treat '?' as NaN in all columns: pd.read_csv(fname, na_values='?') # to treat '?' as NaN in just the occupation column: pd.read_csv(fname, na_values={'occupation': '?'})
然后,您可以根据需要对该列执行dropna或fillna('')操作。
dropna
fillna('')
wvt8vs2t2#
清除白色并使用“unselect”筛选器:
import pandas as pd bugs = ['grasshopper','cricket','ant','spider'] fruit = ['lemon','komquat','watermelon','apple'] squashed = [' ? ','Yes','No','Eww'] df = pd.DataFrame(list(zip(bugs,fruit,squashed)), columns = ['Bugs','Fruit','Squashed']) print(df.head())
df = df[df['Squashed'].apply(lambda x: x.strip()) != '?'] print('after stripping white space and after unselect') print(df.head())
"为什么"dataframe方法.dropna()不会检测空白(即''),但会查找Nan或NaT或None。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html但是,使用.replace()将值设置为missing将不起作用,因为.replace()要求类型匹配,而None与列中已有的任何类型都不匹配。最好清理白色(这是一个简单的例子),在每个条目上使用lambda来应用字符串转换。
0ve6wy6x3#
你可以试试这个
df = df[df.occupation != "?"]
3条答案
按热度按时间4sup72z81#
如果你用
pd.read_csv()
阅读csv,你可以传递na_values
。然后,您可以根据需要对该列执行
dropna
或fillna('')
操作。wvt8vs2t2#
清除白色并使用“unselect”筛选器:
"为什么"
dataframe方法.dropna()不会检测空白(即''),但会查找Nan或NaT或None。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html
但是,使用.replace()将值设置为missing将不起作用,因为.replace()要求类型匹配,而None与列中已有的任何类型都不匹配。
最好清理白色(这是一个简单的例子),在每个条目上使用lambda来应用字符串转换。
0ve6wy6x3#
你可以试试这个