এই সমস্যাটি সম্ভবত উদ্ভাসিত হয় কারণ আপনার সিএসভি এর সাথে সংরক্ষণ করা হয়েছিল RangeIndex
(যার সাধারণত নাম থাকে না)। ডেটাফ্রেম সংরক্ষণ করার সময় এই ফিক্সটি আসলেই করা দরকার, তবে এটি সর্বদা কোনও বিকল্প নয়।
এড়ানো সমস্যা: read_csv
সঙ্গে index_col
যুক্তি
আইএমও, সবচেয়ে সহজ সমাধান হ'ল সূচি হিসাবে নামহীন কলামটি পড়া । একটি 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
, যদি আপনার ডেটাফ্রেমের সূচনা না শুরু হয়।
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