2017-07-06 23 views
5

Khi chuyển cột số nguyên, tôi biết cách sửa cột của tôi khi Pandas tự động chuyển đổi số nguyên thành số float vì sự hiện diện của NaN. I basically use the method described here.Pandas Shift Chuyển đổi Ints thành Float và Rounds

Tuy nhiên, nếu thay đổi giới thiệu một NaN chuyển đổi tất cả các số nguyên thành nổi, có một số làm tròn xảy ra (ví dụ: trên dấu thời gian).

Bất kỳ cách nào để sửa lỗi này?

Ví dụ dữ liệu:

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

Ví dụ Code:

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

đầu ra Kết quả:

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

Bạn có thể cung cấp dữ liệu ví dụ về điều này xảy ra không? –

+0

@Cedric xem câu hỏi được cập nhật – guy

Trả lời

1

Bởi vì bạn biết những gì sẽ xảy ra khi int được chọn vào vai phao do np.nan bạn biết rằng bạn không muốn các hàng np.nan anyway, bạn có thể tự thay đổi bằng numpy

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

       epoch   prior_epoch 
1 1495571400260585120 1495571400259317500 
2 1495571400260757200 1495571400260585120 
3 1495571400260866800 1495571400260757200 
Các vấn đề liên quan