2017-07-06 29 views
5

Podczas przesuwania kolumny liczb całkowitych, wiem, jak naprawić moją kolumnę, gdy Pandy automatycznie konwertuje liczby całkowite na zmienne ze względu na obecność NaN. I basically use the method described here.Pandas Shift Konwertuje Ints na Float i rundy

Jednakże, jeżeli zmiana wprowadza NaN tym samym przekształcając wszystkie liczby całkowite dla pływaków, istnieje pewne zaokrąglenie tak się dzieje (np na znaczniki czasu epoki), więc nawet przekształcenie go z powrotem do liczby całkowitej nie powielać to, co było pierwotnie.

Jakikolwiek sposób to naprawić?

Przykład Dane:

pd.DataFrame({'epochee':[1495571400259317500,1495571400260585120,1495571400260757200, 1495571400260866800]}) 
Out[19]: 
       epoch 
0 1495571790919317503 
1 1495999999999999999 
2 1495571400265555555 
3 1495571400267777777 

Przykład Kod:

df['prior_epochee'] = df['epochee'].shift(1) 
df.dropna(axis=0, how='any', inplace=True) 
df['prior_epochee'] = df['prior_epochee'].astype(int) 

wyjście Wynikające:

Out[22]: 
       epoch   prior_epoch 
1 1444444444444444444 1400000000000000000 
2 1433333333333333333 1490000000000000000 
3 1777777777777777777 1499999999999999948 
+0

można podać przykładowe dane, gdzie to się dzieje? –

+0

@Cedric patrz zaktualizowane pytanie – guy

Odpowiedz

1

Bo wiesz, co się dzieje, gdy int jest lanego jako pływaka powodu np.nani wiesz, że nie chcesz np.nan wiersze tak, można przenieść się z numpy

df[1:].assign(prior_epoch=df.epoch.values[:-1]) 

       epoch   prior_epoch 
1 1495571400260585120 1495571400259317500 
2 1495571400260757200 1495571400260585120 
3 1495571400260866800 1495571400260757200