तो मैं जो इस तरह दिखता है एनओएए से एक स्टेशन कोड csv फ़ाइल में पढ़ रहा हूँ:पांडा read_csv dtype अग्रणी शून्य
"USAF","WBAN","STATION NAME","CTRY","FIPS","STATE","CALL","LAT","LON","ELEV(.1M)","BEGIN","END"
"006852","99999","SENT","SW","SZ","","","+46817","+010350","+14200","",""
"007005","99999","CWOS 07005","","","","","-99999","-999999","-99999","20120127","20120127"
पहले दो स्तंभों मौसम स्टेशनों के लिए कोड होते हैं और कभी कभी वे अग्रणी शून्य है। जब पांडा उन्हें एक प्रकार के निर्दिष्ट किए बिना आयात करता है तो वे पूर्णांक में बदल जाते हैं। यह वास्तव में एक सौदा का बड़ा नहीं है क्योंकि मैं डेटाफ्रेम इंडेक्स के माध्यम से लूप कर सकता हूं और उन्हें "%06d" % i
जैसे कुछ के साथ बदल सकता हूं क्योंकि वे हमेशा छह अंक होते हैं, लेकिन आप जानते हैं ... यह आलसी मनुष्य है।
सीएसवी इस कोड का उपयोग कर प्राप्त किया जाता है:
file = urllib.urlopen(r"ftp://ftp.ncdc.noaa.gov/pub/data/inventories/ISH-HISTORY.CSV")
output = open('Station Codes.csv','wb')
output.write(file.read())
output.close()
जो सभी अच्छी तरह से और अच्छा है, लेकिन जब मैं जाने के लिए और कोशिश करते हैं और इस का उपयोग कर इसे पढ़ें:
import pandas as pd
df = pd.io.parsers.read_csv("Station Codes.csv",dtype={'USAF': np.str, 'WBAN': np.str})
या
import pandas as pd
df = pd.io.parsers.read_csv("Station Codes.csv",dtype={'USAF': str, 'WBAN': str})
मुझे एक बुरा त्रुटि संदेश मिलता है:
File "C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\io\parsers.py", line 401, in parser
_f
return _read(filepath_or_buffer, kwds)
File "C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\io\parsers.py", line 216, in _read
return parser.read()
File "C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\io\parsers.py", line 633, in read
ret = self._engine.read(nrows)
File "C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\io\parsers.py", line 957, in read
data = self._reader.read(nrows)
File "parser.pyx", line 654, in pandas._parser.TextReader.read (pandas\src\parser.c:5931)
File "parser.pyx", line 676, in pandas._parser.TextReader._read_low_memory (pandas\src\parser.c:6148)
File "parser.pyx", line 752, in pandas._parser.TextReader._read_rows (pandas\src\parser.c:6962)
File "parser.pyx", line 837, in pandas._parser.TextReader._convert_column_data (pandas\src\parser.c:7898)
File "parser.pyx", line 887, in pandas._parser.TextReader._convert_tokens (pandas\src\parser.c:8483)
File "parser.pyx", line 953, in pandas._parser.TextReader._convert_with_dtype (pandas\src\parser.c:9535)
File "parser.pyx", line 1283, in pandas._parser._to_fw_string (pandas\src\parser.c:14616)
TypeError: data type not understood
यह एक बहुत बड़ी सीएसवी (31k पंक्तियां) है, तो शायद इसके साथ कुछ करने के लिए कुछ है?
मैंने पाया कि वस्तु का उपयोग कर अग्रणी शून्य रखने के लिए काम करता है करना होगा: dtype = {'यूएसएएफ': ऑब्जेक्ट, 'डब्ल्यूबीएएन': ऑब्जेक्ट} इस पोस्ट से: http: // stackoverflow।कॉम/प्रश्न/13293810/आयात-पांडा-डेटाफ्रेम-कॉलम-ए-स्ट्रिंग-नहीं-int –
यह थोड़ा अजीब है कि str/np.str सिर्फ काम नहीं करता है ...: एसआई आश्चर्य करता है कि यह एक बग है, हो सकता है एक [github पर मुद्दा] के रूप में पोस्टिंग के लायक हो (https://github.com/pydata/pandas/issues)। –
हाँ मैंने सोचा कि यह अजीब भी था क्योंकि मैं वहां अन्य नंबर डेटा प्रकारों का उपयोग कर सकता था। –