मेरे पास एक सीएसवी फाइल है जो pandas.read_csv
कॉलम को फिल्टर करने usecols
और कई इंडेक्स का उपयोग करने के साथ सही ढंग से नहीं आ रही है ।
import pandas as pd
csv = r"""dummy,date,loc,x
bar,20090101,a,1
bar,20090102,a,3
bar,20090103,a,5
bar,20090101,b,1
bar,20090102,b,3
bar,20090103,b,5"""
f = open('foo.csv', 'w')
f.write(csv)
f.close()
df1 = pd.read_csv('foo.csv',
header=0,
names=["dummy", "date", "loc", "x"],
index_col=["date", "loc"],
usecols=["dummy", "date", "loc", "x"],
parse_dates=["date"])
print df1
# Ignore the dummy columns
df2 = pd.read_csv('foo.csv',
index_col=["date", "loc"],
usecols=["date", "loc", "x"], # <----------- Changed
parse_dates=["date"],
header=0,
names=["dummy", "date", "loc", "x"])
print df2
मुझे उम्मीद है कि लापता डमी कॉलम को छोड़कर df1 और df2 समान होना चाहिए, लेकिन कॉलम गलत तरीके से आते हैं। साथ ही तारीख को तारीख के रूप में पार्स किया जा रहा है।
In [118]: %run test.py
dummy x
date loc
2009-01-01 a bar 1
2009-01-02 a bar 3
2009-01-03 a bar 5
2009-01-01 b bar 1
2009-01-02 b bar 3
2009-01-03 b bar 5
date
date loc
a 1 20090101
3 20090102
5 20090103
b 1 20090101
3 20090102
5 20090103
नामों के बजाय कॉलम नंबरों का उपयोग करने से मुझे वही समस्या होती है। मैं read_csv चरण के बाद डमी कॉलम को हटाकर समस्या को हल कर सकता हूं, लेकिन मैं यह समझने की कोशिश कर रहा हूं कि क्या गलत हो रहा है। मैं 0.10.1 पांडा का उपयोग कर रहा हूं।
संपादित करें: फिक्स्ड खराब हेडर उपयोग।
header
औरnames
कीवर्ड का उपयोग सही नहीं है (इसीलिए आपके उदाहरण में पहली पंक्ति गायब है।header
शीर्ष लेख के साथ पंक्ति के रूप में एक int (डिफ़ॉल्ट 0) की अपेक्षा करता है। क्योंकि आप 'True' देते हैं, जिसकी व्याख्या 1 के रूप में की गई है। दूसरी पंक्ति (पहली डेटा पंक्ति) का उपयोग हेडर के रूप में किया जाता है और गायब हो जाता है। हालांकि कॉलम के नाम सही हैं क्योंकि आपnames
तर्क के साथ ओवरराइट करते हैं। लेकिन आप उन्हें छोड़ सकते हैं और पहली पंक्ति को डिफ़ॉल्ट रूप से कॉलम नामों के लिए उपयोग किया जाता है। हालाँकि, यह आपके प्रारंभिक प्रश्न को हल नहीं करता है।