2012-11-08 6 views
39

मैं निम्नलिखित सीएसवी को स्ट्रिंग के रूप में int64 के रूप में आयात करना चाहता हूं। पांडस read_csv स्वचालित रूप से इसे int64 में परिवर्तित करता है, लेकिन मुझे इस कॉलम को स्ट्रिंग के रूप में चाहिए।आयात करें पांडा डेटाफ्रेम कॉलम स्ट्रिंग के रूप में int

ID 
00013007854817840016671868 
00013007854817840016749251 
00013007854817840016754630 
00013007854817840016781876 
00013007854817840017028824 
00013007854817840017963235 
00013007854817840018860166 


df = read_csv('sample.csv') 

df.ID 
>> 

0 -9223372036854775808 
1 -9223372036854775808 
2 -9223372036854775808 
3 -9223372036854775808 
4 -9223372036854775808 
5 -9223372036854775808 
6 -9223372036854775808 
Name: ID 

दुर्भाग्य से कन्वर्टर्स का उपयोग करने से एक ही परिणाम मिलता है।

df = read_csv('sample.csv', converters={'ID': str}) 
df.ID 
>> 

0 -9223372036854775808 
1 -9223372036854775808 
2 -9223372036854775808 
3 -9223372036854775808 
4 -9223372036854775808 
5 -9223372036854775808 
6 -9223372036854775808 
Name: ID 
+2

यह इस सवाल का डुप्लिकेट है: http://stackoverflow.com/questions/13250046/pandas-csv-import-keep-leading-zeros-in-a- कॉलम –

+1

यह स्पष्ट रूप से उस मुद्दे पर प्रकाश डाला गया है जहां कनवर्टर्स काम करने में विफल रहता है। इसलिए, यह उपर्युक्त प्रश्न के अतिरिक्त अभी भी उपयोगी है। –

उत्तर

63

बस इस दोहराते हैं पांडा> = 0.9.1 में काम करेंगे चाहते हैं:

In [2]: read_csv('sample.csv', dtype={'ID': object}) 
Out[2]: 
          ID 
0 00013007854817840016671868 
1 00013007854817840016749251 
2 00013007854817840016754630 
3 00013007854817840016781876 
4 00013007854817840017028824 
5 00013007854817840017963235 
6 00013007854817840018860166 

मैं पता लगाने के बारे में एक मुद्दा बना रहा हूं पूर्णांक अतिप्रवाह भी।

संपादित करें: यहाँ संकल्प देखें: https://github.com/pydata/pandas/issues/2247

+0

मैं थोड़ी देर के लिए विकास 0.9.1 संस्करण का उपयोग कर रहा हूं, और यह ठीक काम करता है। धन्यवाद! – Oliver

+1

यह भी लगता है, यदि आप सभी कॉलम स्ट्रिंग के रूप में व्याख्या करना चाहते हैं, तो कोई निम्न कार्य कर सकता है: 'dtype = str'। – steveb

7

यह शायद ऐसा करने का सबसे शानदार तरीका नहीं है, लेकिन यह काम पूरा हो जाता है।

In[1]: import numpy as np 

In[2]: import pandas as pd 

In[3]: df = pd.DataFrame(np.genfromtxt('/Users/spencerlyon2/Desktop/test.csv', dtype=str)[1:], columns=['ID']) 

In[4]: df 
Out[4]: 
         ID 
0 00013007854817840016671868 
1 00013007854817840016749251 
2 00013007854817840016754630 
3 00013007854817840016781876 
4 00013007854817840017028824 
5 00013007854817840017963235 
6 00013007854817840018860166 

बस अपने फ़ाइल का पथ के साथ '/Users/spencerlyon2/Desktop/test.csv' की जगह