Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让Python和dropna方法一起使用';不适用';价值观_Python_Pandas - Fatal编程技术网

让Python和dropna方法一起使用';不适用';价值观

让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岁,单身, 约

我有一个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岁,单身, 约翰,不适用,已婚, 贝克,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
等。。非常感谢你的帮助。感谢你的帮助。如果这已经回答了你的问题(我很确定它已经回答了),那么你应该接受它。