让Python和dropna方法一起使用';不适用';价值观
我有一个csv文件,其中字段中的一些值为N/a。我尝试了几种方法来消除那些无法消除的值,我也不理解让Python和dropna方法一起使用';不适用';价值观,python,pandas,Python,Pandas,我有一个csv文件,其中字段中的一些值为N/a。我尝试了几种方法来消除那些无法消除的值,我也不理解dropna()函数是如何工作的 例如: name, Age, Status, Ally, 21, Single, Daniel, 32, Single, John, N/A, Married, Baker, 25, Single, Josh, N/A, Married 姓名、年龄、身份、, 艾丽,21岁,单身, 丹尼尔,32岁,单身, 约
dropna()
函数是如何工作的
例如:
name, Age, Status,
Ally, 21, Single,
Daniel, 32, Single,
John, N/A, Married,
Baker, 25, Single,
Josh, N/A, Married
姓名、年龄、身份、,
艾丽,21岁,单身,
丹尼尔,32岁,单身,
约翰,不适用,已婚,
贝克,25岁,单身,
乔希,不适用,已婚
我正在尝试使用dropna方法删除“N/A”值。
我希望结果返回一个包含年龄的列表,如[21,32,25]
如何执行此操作?使用读取CSV文件并指定skipinitialspace=True
。这将启用默认的“N/A”检测,前导空格阻止该检测工作
>>> from pandas import read_csv
>>> df = read_csv('input.csv', skipinitialspace=True)
>>> df
name Age Status Unnamed: 3
0 Ally 21 Single NaN
1 Daniel 32 Single NaN
2 John NaN Married NaN
3 Baker 25 Single NaN
4 Josh NaN Married NaN
最后一列为空,是大多数行末尾的尾随,
的结果。您可以删除它:
>>> df.drop(df.columns[-1], axis=1, inplace=True)
>>> df
name Age Status
0 Ally 21 Single
1 Daniel 32 Single
2 John NaN Married
3 Baker 25 Single
4 Josh NaN Married
然后可以删除不需要的行:
>>> df.dropna(inplace=1)
>>> df
name Age Status
0 Ally 21 Single
1 Daniel 32 Single
3 Baker 25 Single
最终清单如下所示:
>>> ages = list(df['Age'])
>>> ages
[21.0, 32.0, 25.0]
>>> # or, if you want ints...
>>> ages = list(df['Age'].astype(int))
>>> ages
[21, 32, 25]
以下是简短的版本:
>>> df = read_csv('input.csv', skipinitialspace=True)
>>> ages = list(df.drop(df.columns[-1], axis=1).dropna()['Age'].astype(int))
>>> print ages
[21, 32, 25]
欢迎来到SO。发布你的相关代码,并确保格式化你的样本数据,因为它是在你的CSV文件。好的,我明白你的意思。现在,假设df=read_csv('input.csv',skipinitialspace=True)在'input.csv'部分,我想这样做,file='c:\somepath\input.csv',然后df=read_csv(file,skipinitialspace=True),当我使用它时,它不起作用。它表示该参数假定为字符串。请尝试使用原始字符串作为文件名:
filename=r'c:\somepath\input.csv';df=read\u csv(文件名,skipinitialspace=True)
。您可能会发现这是相同的,但是使用原始字符串可以避免由于反斜杠而形成特殊字符的问题,例如\n
,\t
等。。非常感谢你的帮助。感谢你的帮助。如果这已经回答了你的问题(我很确定它已经回答了),那么你应该接受它。