转换Pandas Dataframe类型

时间:2013-07-03 20:21:01

标签: python numpy pandas

我有一个通过mysql调用创建的pandas dataFrame,它将数据作为对象类型返回。

数据主要是数字,有一些'na'值。

如何转换dataFrame的类型以使数值适当地键入(浮点数)并将'na'值表示为numpy NaN值?

3 个答案:

答案 0 :(得分:1)

df = df.convert_objects(convert_numeric=True)适用于大多数情况。

我应该注意,这会复制数据。最好在初始读取时将其设置为数字类型。如果您发布代码和一个小例子,有人可能会帮助您。

答案 1 :(得分:1)

对数据帧使用replace方法:

import numpy as np
df = DataFrame({
'k1': ['na'] * 3 + ['two'] * 4,
'k2': [1, 'na', 2, 'na', 3, 4, 4]})

print df

df = df.replace('na', np.nan)

print df

我认为指出df.replace('na',np.nan)本身不起作用是有帮助的。您必须将其分配回现有数据帧。

答案 2 :(得分:1)

这是汤姆建议的并且是正确的

In [134]: s = pd.Series(['1','2.','na'])

In [135]: s.convert_objects(convert_numeric=True)
Out[135]: 
0     1
1     2
2   NaN
dtype: float64

正如Andy所指出的,这不起作用(我认为这是一个bug),所以先转换为所有字符串元素,然后转换

In [136]: s2 = pd.Series(['1','2.','na',5])

In [138]: s2.astype(str).convert_objects(convert_numeric=True)
Out[138]: 
0     1
1     2
2   NaN
3     5
dtype: float64