python - 将列转换为字符串,保留 NaN(作为 None 或空白)
问题描述
我想在列表中格式化一堆数字。最简单的方法是首先将其转换为一堆字符串。这是我如何执行此操作的示例:
df[col_name].astype('str').tolist()
但是,这个问题是我得到的值如下:
['12.19', '13.99', '1.00', 'nan', '9.00']
有没有办法可以将'nan'
值返回为None
空字符串或空字符串,例如:
['12.19', '13.99', '1.00', None, '9.00']
或者:
['12.19', '13.99', '1.00', '', '9.00']
我该怎么做这两个?
解决方案
使用df.astype(str, skipna=True)
,它将跳过所有 NA 类型。
例子:
import pandas as pd
df=pd.Series([12.19, 13.99, 1.00, None, 9.00])
print(df.astype(str, skipna=True).to_list())
pd.isna(df.astype(str, skipna=True))
输出:
['12.19', '13.99', '1.0', nan, '9.0']
0 False
1 False
2 False
3 True
4 False
dtype: bool
如果你真的需要它来None
代替np.nan
,那么添加df=df.where(pd.notnull(df), None)
.
例子:
df=pd.Series([12.19, 13.99, 1.00, None, 9.00])
df=df.astype(str, skipna=True)
df=df.where(pd.notnull(df), None)
print(df.to_list())
输出:
['12.19', '13.99', '1.0', None, '9.0']
注意:
skipna
参数从.astype()
pandas 1.0 版本中消失,该问题目前已于 2020 年 2 月 6 日开放。
astype(str) / astype_unicode: np.nan 转换为 "nan" (checknull, skipna)
推荐阅读
- php - 基于单选按钮选择的 Laravel 重定向
- typescript - 无论错误如何使用 ts-node?
- macos - mac os 不安装 gulp
- r - 如何在R中创建具有n个数值的比例
- amazon-web-services - AWS cli s3api put-bucket-tagging - 除非存储桶有 0 个标签,否则无法将标签添加到存储桶
- amazon-web-services - Step Function:数据未传递到下一个 Lambda 函数的事件
- flask - 散景不会渲染
- xamarin - Xamarin Forms - 从平台项目调用共享代码方法
- sql - 错误 Oracle:查询块的结果列数不正确
- apache-spark - 在 Spark 中,我们是否有保证同一个分区中的数据来自同一个文件?