मेरे पास एक डीएफ है जिसमें फ्लोट और टेक्स्ट वैल्यू दोनों के साथ एक कॉलम होता है।

Df.some_column

0    48.5182
1    58.2259
2    some string
3    48.5182
4    17.4928

मैं सीएसवी को सभी मानों को 0 दशमलव तक गोलाकार फ्लोट के साथ लिखना चाहता हूं। तो इस कॉलम में मान होंगे:

48
58
some string
48
17

जब मैं इसे सीएसवी को लिखता हूं

df.to_csv(output_path,encoding='utf-8', index=False, float_format='%.0f')

float_format पर ध्यान नहीं दिया जाता है और मुझे दशमलव मान मिलते हैं। यदि मैं पहले स्ट्रिंग्स वाली पंक्तियों को हटाता हूं, तो float_format अपेक्षा के अनुरूप उपयोग किया जाता है। मैंने मानों को int में बदलने के लिए चारों ओर देखा, लेकिन कॉलम पर ऐसा करने का कोई तरीका नहीं मिला।

ऐसा लगता है कि मैं संभवतः सभी मूल्यों के माध्यम से पुन: प्रयास कर सकता हूं और उन्हें गोल कर सकता हूं, लेकिन मुझे संदेह है कि कुछ और शानदार तरीका है।

2
SeeJay719 19 मई 2016, 11:41
मेरे पास date_format के साथ एक बहुत ही समान प्रश्न है, लेकिन उत्तर बेहद विशिष्ट है कि प्रश्नकर्ता क्या करना चाहता है - क्या स्ट्रिंग रूपांतरण के बाद चालें करने के बजाय मिश्रित श्रृंखला या डेटाफ्रेम कॉलम में वास्तव में float_format और date_format निर्दिष्ट करने का कोई तरीका है?
 – 
moink
15 नवम्बर 2018, 13:32

1 उत्तर

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

आप dtype को str पर डाल सकते हैं और फिर दशमलव बिंदु पर विभाजित कर सकते हैं और पूरी संख्या का हिस्सा ले सकते हैं:

In [70]:    
df['some_col'] = df['some_col'].astype(str)
df['some_col'] = df['some_col'].loc[df['some_col'].str.contains('.')].str.split('.').str[0]
df

Out[70]:
          some_col
index             
0               48
1               58
2      some string
3               48
4               17

फिर जब आप to_csv को कॉल करते हैं तो आपको float_format परम की आवश्यकता नहीं होती है

1
EdChum 19 मई 2016, 11:54