gpt4 book ai didi

python - 在 Pandas DataFrame 中保留 None(尽管有 astype() 和 to_parquet())

转载 作者:行者123 更新时间:2023-12-04 10:07:48 25 4
gpt4 key购买 nike

如何强制 Pandas DataFrame 保留 None值,即使使用 astype() ?

细节

pd.DataFrame构造函数不提供化合物 dtype参数,我使用以下函数修复类型( to_parquet() 所需):

def _typed_dataframe(data: list) -> pd.DataFrame:
typing = {
'name': str,
'value': np.float64,
'info': str,
'scale': np.int8,
}
result = pd.DataFrame(data)
for label in result.keys():
result[label] = result[label].astype(typing[label])
return result

不幸的是, result[info] = result[info].astype(str)全部转换 None info 中的值至 "None"字符串。我怎样才能禁止这个,即保留 None值(value)观?

更准确地说: None data 中的值成为 np.nanresult DataFrame,变成 "nan"来自 astype(str) ,变成 "None"result 提取时.

最佳答案

按照@frosty 的评论,我们可以使用替代方法

    typing = {
'name': str,
'value': np.float64,
'info': pd.StringDtype(),
'scale': np.int8,
}

但是,这需要 pandas ~= 1.0.0 .


作为更好的解决方案,您可以更换
for label in result.keys():
result[label] = result[label].astype(typing[label])

经过
result.astype(schema)

不幸的是, result.astype(typing)没有效果,因为它不能处理复合类型。

关于python - 在 Pandas DataFrame 中保留 None(尽管有 astype() 和 to_parquet()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61487396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com