यह समस्या सबसे अधिक प्रकट होती है क्योंकि आपका CSV इसके साथ सहेजा गया था RangeIndex
(जिसका आमतौर पर नाम नहीं होता)। डेटाफ़्रेम को सहेजते समय फ़िक्स को वास्तव में करने की आवश्यकता होगी, लेकिन यह हमेशा एक विकल्प नहीं होता है।
समस्या से बचना: तर्क के read_csv
साथindex_col
IMO, इंडेक्स के रूप में अनाम कॉलम को पढ़ना सबसे सरल उपाय होगा । एक index_col=[0]
तर्क निर्दिष्ट करें pd.read_csv
, यह सूचकांक के रूप में पहले कॉलम में पढ़ता है।
df = pd.DataFrame('x', index=range(5), columns=list('abc'))
df
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
# Save DataFrame to CSV.
df.to_csv('file.csv')
pd.read_csv('file.csv')
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
# Now try this again, with the extra argument.
pd.read_csv('file.csv', index_col=[0])
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
नोट
यदि आप index=False
अपने डेटाफ़्रेम को प्रारंभ करने के लिए कोई इंडेक्स नहीं बनाते हैं, तो आउटपुट CSV बनाते समय उपयोग करके आप इसे पहले ही टाल सकते थे।
df.to_csv('file.csv', index=False)
लेकिन जैसा कि ऊपर कहा गया है, यह हमेशा एक विकल्प नहीं है।
स्टॉपगैप सॉल्यूशन: फ़िल्टरिंग के साथ str.match
आप पढ़ सकते हैं / CSV फ़ाइल में लिखने के लिए कोड संशोधित नहीं कर सकते हैं, तो आप सिर्फ कर सकते हैं छान कर इस स्तंभ को निकालने के साथ str.match
:
df
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
df.columns
# Index(['Unnamed: 0', 'a', 'b', 'c'], dtype='object')
df.columns.str.match('Unnamed')
# array([ True, False, False, False])
df.loc[:, ~df.columns.str.match('Unnamed')]
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x