我有一个场景,其中数据集中的一个记录包含空值(为便于理解,下面简化)。数据中有两条记录,一条记录为0.1,另一条记录为“无”。当我序列化df1
时,我得到了我想要的响应,即第二条记录的null。
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。请注意,如果我使用float而不是decimal,但这不是我可以使用的选项。
答案 0 :(得分:0)
df3['A'] = df2['A'].apply(lambda x: (decimal.Decimal(x) if not pd.isnull(x) else None))