将基于字符串的NaN转换为numpy NaN' s

时间:2016-10-10 03:34:26

标签: python pandas numpy

我有一个数据框,其中一部分显示如下:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}  !-f
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteRule ^blog/(.*)$ news/$1 [R=301,L]

该列包含NaN作为字符串/对象。我怎样才能将它转换为numpy nan。当我读入csv文件时,Best能够这样做。

4 个答案:

答案 0 :(得分:1)

假设我们有:

>>> df=pd.DataFrame({'col':['NaN']*10})

您可以使用.apply转换:

>>> new_df=df.apply(float, axis=1)
>>> type(new_df[0])
<type 'numpy.float64'>

答案 1 :(得分:1)

是的,您可以在阅读csv文件时执行此操作。

df = pd.read_csv('test.csv', names=['t', 'v'], dtype={'v':np.float64})

查看pandas.read_csv的文档。有些参数对您的应用程序很有用:

  • 姓名
  • D型细胞
  • na_values

希望这会有所帮助。

答案 2 :(得分:1)

我使用converters中的read_csv选项。在这种情况下,我们的目标是将相关列转换为数值,并将其他所有内容视为numpy.nan,其中包含字符串版本'NaN'

converter = lambda x: pd.to_numeric(x, 'coerce')
df = pd.read_csv(StringIO(txt), delim_whitespace=True, converters={1: converter}, header=None)
df

enter image description here

df.dtypes

0     object
1    float64
dtype: object

答案 3 :(得分:1)

df[var_name_replace] = df[var_name].replace('NaN', np.nan)