আমি iloc
পান্ডায় ব্যবহার করে বিভিন্ন সূচক পদ্ধতিতে এত বিভ্রান্ত হয়ে পড়েছি ।
যাক আমি 1-d ডেটাফ্রেমকে 2-ডি ডেটাফ্রেমে রূপান্তর করার চেষ্টা করছি। প্রথমে আমার নীচের 1-ডি ডেটাফ্রেম রয়েছে
a_array = [1,2,3,4,5,6,7,8]
a_df = pd.DataFrame(a_array).T
এবং আমি আকার হিসাবে এটি একটি 2-ডে ডাটাফ্রেমে রূপান্তর করতে যাচ্ছি 2x4
। আমি নিম্নলিখিত হিসাবে 2-ডি ডেটাফ্রেমে প্রিসেট করে শুরু করব:
b_df = pd.DataFrame(columns=range(4),index=range(2))
তারপরে আমি নীচের কোডটি দিয়ে a_df
(1-d) b_df
(2-d) রূপান্তর করতে সহায়তা করতে আমি লুপ ব্যবহার করি
for i in range(2):
b_df.iloc[i,:] = a_df.iloc[0,i*4:(i+1)*4]
এটি কেবল আমাকে নিম্নলিখিত ফলাফল দেয়
0 1 2 3
0 1 2 3 4
1 NaN NaN NaN NaN
কিন্তু যখন আমি পরিবর্তন b_df.iloc[i,:]
করতে b_df.iloc[i][:]
। ফলাফলটি নীচের মতো সঠিক, যা আমি চাই
0 1 2 3
0 1 2 3 4
1 5 6 7 8
কেউ আমার কাছে ব্যাখ্যা গেল কি মধ্যে পার্থক্য .iloc[i,:]
এবং .iloc[i][:]
, এবং কেন .iloc[i][:]
উপরে কিন্তু আমার উদাহরণে কাজ.iloc[i,:]
b_df.iloc[1] = a_df.iloc[0, 4:8]
নির্ধারণ সূচকের সাথে একটি সিরিজ[4, 5, 6, 7]
সূচক সঙ্গে একটি সিরিজ[0, 1, 2, 3]
। কোনও ওভারল্যাপ নেই তাইNaN
সমস্ত উপাদানকে বরাদ্দ করুন। এই মুহুর্তে এটি আমার কাছে বোধগম্য হয়। তবে আপনার মতো আমি কেন অস্পষ্টb_df.iloc[1][:] = ...
আচরণ করি তা সম্পর্কে অস্পষ্ট the বস্তুগুলি পরীক্ষা করাb_df.iloc[1]
এবংb_df.iloc[1][:]
সূচকগুলির মধ্যে কোনও পার্থক্য প্রকাশ করে না। আমার সর্বোত্তম অনুমানটি[:]
হ'ল সরাসরি অনুলিপি ( ) সরবরাহ করার বিষয়টি পান্ডাদের দ্বারা একটি বিশেষ কেস হিসাবে বিবেচনা করা হয় যা এ্যাসিগ্নির সূচকে উপেক্ষা করে এবং এই তাত্পর্য তৈরি করে।