2017-07-06 6 views
5

पूर्णांक के कॉलम को स्थानांतरित करते समय, मुझे पता है कि मेरे कॉलम को कैसे ठीक किया जाए जब पांडस स्वचालित रूप से पूर्णांक को एनएएन की उपस्थिति के कारण फ़्लोट करने के लिए परिवर्तित कर देता है। I basically use the method described here.पांडस शिफ्ट इनट्स को फ्लोट और राउंड्स में परिवर्तित करता है

हालांकि, अगर पारी एक NaN जिससे तैरता के लिए सभी पूर्णांकों परिवर्तित करने का परिचय है, वहाँ कुछ राउंडिंग कि (युग टाइम स्टांप पर उदा) होता है तो भी इसे वापस पूर्णांक तक recasting को दोहराने नहीं पड़ता कि यह मूल रूप से था।

इसे ठीक करने का कोई तरीका?

उदाहरण डेटा:

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

उदाहरण कोड:

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

परिणामस्वरूप उत्पादन:

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

आप उदाहरण डेटा जहां ऐसा होता है प्रदान कर सकते हैं अपने आप को बदल सकते हैं? –

+0

@Cedric अद्यतन प्रश्न देखें – guy

उत्तर

1

क्योंकि आप जानते हैं कि क्या होता है जब intnp.nanऔर की वजह से नाव के रूप में casted है आप जानते हैं कि आप np.nan पंक्तियों वैसे भी नहीं करना चाहते हैं, आप के साथ numpy

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

       epoch   prior_epoch 
1 1495571400260585120 1495571400259317500 
2 1495571400260757200 1495571400260585120 
3 1495571400260866800 1495571400260757200 
संबंधित मुद्दे