gpt4 book ai didi

python-3.x - pandas.to_dict 返回 None 与 nan 混合

转载 作者:行者123 更新时间:2023-12-04 06:22:16 25 4
gpt4 key购买 nike

我偶然发现了 Pandas 的一个小问题,它是 to_dict 方法。
我有一张表,我确定每行中的相同列数相同,假设它看起来像这样:

+----|----|----+
|COL1|COL2|COL3|
+----|----|----+
|VAL1| |VAL3|
| |VAL2|VAL3|
|VAL1|VAL2| |
+----|----|----+

当我这样做时 df.to_dict(orient='records')我得到:
[{
"COL1":"VAL1"
,"COL2":nan
,"COL3":"VAL3"
}
,{
"COL1":None
,"COL2":"VAL2"
,"COL3":"VAL3"
}
,{
"COL1":"VAL1"
,"COL2":"VAL2"
,"COL3":nan
}]

通知 nan的在某些列和 None 's in other(总是相同的,在同一列中似乎没有 nanNone)

当我这样做时 json.loads(df.to_json(orient='records'))我只有 None没有 nan 's(这是所需的输出)。

像这样:
[{
"COL1":"VAL1"
,"COL2":None
,"COL3":"VAL3"
}
,{
"COL1":None
,"COL2":"VAL2"
,"COL3":"VAL3"
}
,{
"COL1":"VAL1"
,"COL2":"VAL2"
,"COL3":None
}]

我希望能解释一下为什么会发生这种情况以及是否可以以某种方式控制它。

==编辑==

根据评论,最好先替换那些 nanNone的,但那些 nan不是 np.nan :
>>> a = df.head().ix[0,60]
>>> a
nan
>>> type(a)
<class 'numpy.float64'>
>>> a is np.nan
False
>>> a == np.nan
False

最佳答案

我想你只能 replace , 在 to_dict 中无法控制:

L = [{
"COL1":"VAL1"
,"COL2":np.nan
,"COL3":"VAL3"
}
,{
"COL1":None
,"COL2":"VAL2"
,"COL3":"VAL3"
}
,{
"COL1":"VAL1"
,"COL2":"VAL2"
,"COL3":np.nan
}]

df = pd.DataFrame(L).replace({np.nan:None})
print (df)
COL1 COL2 COL3
0 VAL1 None VAL3
1 None VAL2 VAL3
2 VAL1 VAL2 None

print (df.to_dict(orient='records'))
[{'COL3': 'VAL3', 'COL2': None, 'COL1': 'VAL1'},
{'COL3': 'VAL3', 'COL2': 'VAL2', 'COL1': None},
{'COL3': None, 'COL2': 'VAL2', 'COL1': 'VAL1'}]

关于python-3.x - pandas.to_dict 返回 None 与 nan 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43254699/

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