Python 熊猫:将带空字符串的列转换为浮点
在我的应用程序中,我收到一个pandas数据帧(比如,Python 熊猫:将带空字符串的列转换为浮点,python,pandas,Python,Pandas,在我的应用程序中,我收到一个pandas数据帧(比如,block),它有一个名为est的列。此列可以包含字符串或浮点数的组合。我需要将列中的所有值转换为浮点数,并使列类型为float64。我使用以下代码执行此操作: block[est].convert_objects(convert_numeric=True) block[est].astype('float') 这适用于大多数情况。但是,在一种情况下,est包含所有空字符串。在这种情况下,第一条语句执行时不会出错,但列中的空字符串仍然是空字
block
),它有一个名为est
的列。此列可以包含字符串或浮点数的组合。我需要将列中的所有值转换为浮点数,并使列类型为float64
。我使用以下代码执行此操作:
block[est].convert_objects(convert_numeric=True)
block[est].astype('float')
这适用于大多数情况。但是,在一种情况下,est
包含所有空字符串。在这种情况下,第一条语句执行时不会出错,但列中的空字符串仍然是空字符串。然后,第二条语句导致错误:ValueError:无法将字符串转换为float:
如何修改代码以处理包含所有空字符串的列
编辑:我知道我可以只做块[est].replace(“,np.NaN)
,但我想知道是否有办法只处理我缺少的convert\u对象
或astype
澄清:出于项目特定的原因,我需要使用pandas 0.16.2
下面是与一些示例数据的交互,演示了故障:
>>> block = pd.DataFrame({"eps":["", ""]})
>>> block = block.convert_objects(convert_numeric=True)
>>> block["eps"]
0
1
Name: eps, dtype: object
>>> block["eps"].astype('float')
...
ValueError: could not convert string to float:
使用以下工具更容易实现: 熊猫。给你数字 “强制”将任何值错误转换为
NaN
df['eps'].astype('float')
0 1.0
1 1.6
2 1.6
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64
然后,您可以应用其他函数而不会出现错误:
df['eps'].round()
0 1.0
1 2.0
2 2.0
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64
我不这么认为。我在这里遇到的问题是空字符串,而不是修改非空值。请发布几行示例数据好吗?与我的pandas版本不兼容:
AttributeError:“DataFrame”对象没有属性“data”
对不起,这是我给该列的名称。根据您的示例,这应该是eps。这将用NaN替换有效数据,这不是我想要做的。例如,如果我的数据帧包含[“”,“1.0”],则“1.0”也会转换为NaN。这就是为什么示例数据要走很长的路。你能寄一些吗?
df['eps'].astype('float')
0 1.0
1 1.6
2 1.6
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64
df['eps'].round()
0 1.0
1 2.0
2 2.0
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64