pandas 如何删除数据框列中包含问号而不是占用的所有行

hjzp0vay  于 2022-12-09  发布在  其他
关注(0)|答案(3)|浏览(193)

这是我的尝试:

df['occupation']= df['occupation'].str.replace('?',  '')

df.dropna(subset=['occupation'], inplace=True)

但它不工作,我如何删除所有的行的职业列,我读了一个csv文件,其中包含一个?而不是一个职业

4sup72z8

4sup72z81#

如果你用pd.read_csv()阅读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': '?'})

然后,您可以根据需要对该列执行dropnafillna('')操作。

wvt8vs2t

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来应用字符串转换。

0ve6wy6x

0ve6wy6x3#

你可以试试这个

df = df[df.occupation != "?"]

相关问题