Pandas:关于如何处理丢失小数的建议

Posted

技术标签:

【中文标题】Pandas:关于如何处理丢失小数的建议【英文标题】:Pandas: Recommendation on how to handle missing decimal 【发布时间】:2018-10-25 08:24:14 【问题描述】:

我有一个场景,其中数据集中的一条记录包含空值(为了便于理解,在下面进行了简化)。 data 中有两条记录,一条为 0.1,另一条为 None。当我序列化df1 时,我得到了我想要的响应,即第二条记录为空。

import pandas as pd
import numpy as np
import decimal


data = ['A': 0.1, 'A': None]
df1 = pd.DataFrame(data)
print(df1.to_json(orient='records'))

打印["A":0.1,"A":null]

我想将 A 视为小数,如下所示:

df3 = df1.copy()
df3['A'] = df2['A'].apply(lambda x: decimal.Decimal(x))
print(df3.to_json(orient='records')) # this throws exception

打印OverflowError: Invalid Nan value when encoding double

我希望得到与df1 相同的结果,即 json 中缺少的小数为 null。请注意,如果我使用浮点数而不是十进制数,则此方法有效,但这不是我可以使用的选项。

【问题讨论】:

【参考方案1】:
df3['A'] = df2['A'].apply(lambda x: (decimal.Decimal(x) if not pd.isnull(x) else None))

【讨论】:

以上是关于Pandas:关于如何处理丢失小数的建议的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 Listview 中的单击事件?

如何处理 r 语言的 50GB 大 csv 文件?

如何处理他人的抱怨和批评

kapt:如何处理测试源?

如何处理 Pandas 中的 SettingWithCopyWarning

如何处理 Pandas 中的 SettingWithCopyWarning