2017-01-10 4 views
3

Ich habe eine DataFrame, die in der folgenden Art und Weise schlecht zu benehmen scheint (?):Wie kommt es, dass DataFrame.to_dict bei Aufruf unterschiedliche Werte zurückgibt?

>>> a=z.to_dict(orient='records') 
>>> b=z.to_dict(orient='records') 
>>> a1=json.dumps(a) 
>>> b1=json.dumps(b) 
>>> a1 == b1 
True 
>>> a == b 
False # <<<===== WHAT?!!! 
>>> for i in xrange(z.shape[0]): 
     print i, a[i] == b[i] 
0 True 
... 
9 True 
10 True 
11 True 
12 False 
13 True 
14 True 
... 
20 True 
21 False 
22 True 
... 
29 False 
30 True 
... 
40 True 
41 True 
42 False 
43 True 
44 True 
... 
50 False 
51 True 
52 False 
... 

Was bedeutet das ?!

+0

Was ist 'a [12]' und 'b [12]'? –

+2

Vielleicht, ist es "NaN"? Denn das wird '' '' immer 'Falsch' zurückgeben. Die JSON-String-Repräsentationen sind jedoch gleich ... –

Antwort

1

@ juanpa.arrivlllaga genagelt es. In einem Schwimmer Datenrahmen, wenn eine Zelle ist np.nannp.nan == np.nan ausgewertet False

z = pd.DataFrame(np.random.randn(10, 10), columns=list('abcdefghij')) 
z 

enter image description here

a=z.to_dict(orient='records') 
b=z.to_dict(orient='records') 
a1=json.dumps(a) 
b1=json.dumps(b) 

a == b 

True 

a1 == b1 

True 

z.loc[5, 'd'] = np.nan 
z 

enter image description here

a=z.to_dict(orient='records') 
b=z.to_dict(orient='records') 
a1=json.dumps(a) 
b1=json.dumps(b) 

a == b 

True 

a1 == b1 

False 
Verwandte Themen