Python pandas系列:将浮点转换为字符串,保留空值

2024-09-28 20:18:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在转换为字符串后保留空值?我用的是社会保险号,在这里有必要在浮动和字符串之间来回切换。在

import pandas as pd
import numpy as np    
x = pd.Series([np.nan, 123., np.nan, 456.], dtype = float)
x.isnull()

…有空的

^{pr2}$

…没有空的

所以理想情况下x.isnull()和y.isnull()应该是相同的。在

我认为使用一系列混合数据类型是危险的,但我认为这是目前最好的解决方案:

z = y.copy()
z[z == 'nan'] = np.nan
z.isnull() # works as desired
type(z[0]) # but has floats for nulls
type(z[1]) # and strings for values

Tags: 字符串importnumpypandasforastypenp
3条回答

您可以强制转换为字符串,条件是不为null。在

x[x.notnull()] = x.astype(str)

x
Out[32]
0      NaN
1    123.0
2      NaN
3    456.0
dtype: object

x.values
Out[33]: array([nan, '123.0', nan, '456.0'], dtype=object)

x.isnull()
Out[34]
0     True
1    False
2     True
3    False
dtype: bool

如果您将np.nan转换为str,它将成为字符串'nan',它将被{}处理,就像其他字符串一样。在

关于您的编辑:在转换成str值之后,您需要定义您认为哪些字符串是“null”。一种方法可能是:

y.isin(['nan', '0', '']) # list contains whatever you want to be evaluated as null

这至少会给你想要的结果。在

使用series where仅将非空值转换为str:

y = x.where(x.isnull(), x.astype(str))
y.isnull()

相关问题 更多 >