pandas.DataFrame.to_dict
将CharArray(N, {i -> '*'}).joinToString(separator="")
转换为nan
,将nan
转换为null
。如Python comparison ignoring nan中所述,这有时不是最理想的。
有没有办法将所有None
转换为nan
? (在None
或稍后在Python中)
,例如,
pandas
我想要
>>> df = pd.DataFrame({"a":[1,None],"b":[None,"foo"]})
>>> df
a b
0 1.0 None
1 NaN foo
>>> df.to_dict()
{'a': {0: 1.0, 1: nan}, 'b': {0: None, 1: 'foo'}}
代替。
答案 0 :(得分:6)
import pandas as pd
df = pd.DataFrame({"a":[1,None],"b":[None,"foo"]})
df.where((pd.notnull(df)), None)
Out[850]:
a b
0 1 None
1 None foo
df.where((pd.notnull(df)), None).to_dict()
Out[851]: {'a': {0: 1.0, 1: None}, 'b': {0: None, 1: 'foo'}}
答案 1 :(得分:3)
初始化为对象DataFrame(处于危险之中......):
df = pd.DataFrame({"a":[1,None],"b":[None,"foo"]}, dtype=object)
df
a b
0 1 None
1 None foo
在第一列中,pandas尝试推断dtype,并猜测浮动。您可以通过强制它保持object
来阻止它,从而完全抑制任何类型的转换。