我已经使用pandas从csv文件中读取了一些数据。该数据不完整,因此包含许多NaN值。我想向数据添加一列来将十六进制值转换为十进制值。不幸的是,具有十六进制值的列都被读取为浮点数,而不是字符串,因为它们恰好具有这些值。
示例数据
val
0 20.0
1 nan
2 20.0
在Python中将十六进制转换为十进制的简单方法似乎是:int('20.0',16)
,这应该得到32
。
然而,由于这是Pandas,我无法将值转换为整数,或者至少我一直收到错误提示。
我的当前代码如下:
df['valdec'] = np.where(np.isnan(df['val']),
df['val'],
int(df['val'].astype(int).astype(str), 16))
这个错误提示为:
ValueError: 无法将NA转换为整数
如果不使用 astype(int)
,值为 "20.0"
,无法进行转换。
在处理 pandas 数据框时,是否有其他方法将浮点值解释为十六进制值并转换为十进制值?
int
进行转换会丢失数字的任何小数部分。从十六进制浮点字符串正确的转换方式是float.fromhex(s)
。 - jasonharper