मेरे पास निम्न कॉलम के साथ डेटाफ्रेम है (dtype='O'):

OUTPUT
1
0
3e-09
NaN
0.4
5.67

और 0 से कम संख्याओं के लिए दशमलव स्थानों की संख्या के साथ एक नया कॉलम जोड़ना चाहेंगे:

OUTPUT   DECIMAL_PLACES
1         0
0         0
3e-09     9
NaN       NaN
0.4       1
5.67      0

मैंने भोलेपन से स्ट्रिंग में बदलने और फिर विभाजित करने की कोशिश की है ('।') लेकिन वैज्ञानिक संकेतन इसे पसंद नहीं करता है। नोट: मेरे पास एक बड़ा डेटासेट है और यह देखना बहुत आसान नहीं है कि वैज्ञानिक संकेतन कहाँ हैं।

3
Kaisar 26 अगस्त 2019, 22:06

1 उत्तर

सबसे बढ़िया उत्तर

यह संक्षेप में एक -log10 ऑपरेशन है। उदाहरण के लिए:

>>> -np.floor(np.log10(df['data']))
0   -0.000000
1         inf
2    9.000000
3         NaN
4    1.000000
Name: data, dtype: float64

0 को यहां inf पर मैप किया गया है। लेकिन हम इसे बाद में ठीक कर सकते हैं। उदाहरण के लिए:

df['places'] = -np.floor(np.log10(df['data']))
df.loc[np.isinf(df['places']), 'places'] = 0

यह हमें देता है:

>>> df
           data  places
0  1.000000e+00    -0.0
1  0.000000e+00     0.0
2  3.000000e-09     9.0
3           NaN     NaN
4  4.000000e-01     1.0
3
Willem Van Onsem 26 अगस्त 2019, 22:11