পান্ডাস মাল্টি-ইনডেক্সকে কলামে পরিণত করুন


155

আমার 2 সূচক স্তর সহ একটি ডেটাফ্রেম রয়েছে:

                         value
Trial    measurement
    1              0        13
                   1         3
                   2         4
    2              0       NaN
                   1        12
    3              0        34 

যা আমি এটিতে পরিণত করতে চাই:

Trial    measurement       value

    1              0        13
    1              1         3
    1              2         4
    2              0       NaN
    2              1        12
    3              0        34 

আমি কীভাবে সেরা এটি করতে পারি?

আমার এটি দরকার কারণ আমি এখানে নির্দেশ অনুসারে ডেটা একত্রিত করতে চাই , তবে আমার কলামগুলি যদি সূচক হিসাবে ব্যবহৃত হয় তবে আমি এটি পছন্দ করতে পারি না।


2
সদৃশ: স্ট্যাকওভারফ্লো / প্রশ্ন / 18624039/… আপনি প্রথম পরামর্শটি চান। .reset_index()
টমআগস্পারগার

1
অনেক ধন্যবাদ, আমি আসলে এটির জন্য প্রচুর পরিমাণে ব্রাউজ করেছি, তবে "কলামে মাল্টিইন্ডেক্স তৈরি করুন" এবং এই জাতীয় প্রশ্নগুলি সর্বদা আমাকে থ্রেডগুলি পেয়েছিল যা তাদের ডেটাফ্রেমগুলিকে প্রাধান্য দিতে চেয়েছিল ...
TheChymera

3
উত্তরটি খুঁজে পাওয়া সহজ যখনই আপনি ইতিমধ্যে এটি জেনে থাকেন :)
টমআগস্পারগার

উত্তর:


192

Reset_index () একটি পান্ডাস DataFrame পদ্ধতি যা কলাম হিসাবে DataFrame মধ্যে সূচক মান হস্তান্তর করবে। প্যারামিটারের জন্য ডিফল্ট সেটিংস হ'ল ড্রপ = ফ্যালস (যা সূচকের মানকে কলাম হিসাবে রাখবে)।

আপনাকে .reset_index(inplace=True)ডেটা ফ্রেমের নামের পরে যা করতে হবে তা:

df.reset_index(inplace=True)  

3
আমার ক্ষেত্রে যেখানে আমার 3 সূচক স্তর ছিল ইনপ্লেস রিসেট কাজ করে না। বিকল্পটি নতুনকে নতুন সেট করা ডেটাফ্রেম বরাদ্দ করছে: df2 = df.reset_index ()
গর্কেম

8
শুধুমাত্র একটি নির্দিষ্ট স্তর (গুলি), ব্যবহার পুনরায় সেট করার জন্যdf.reset_index(level=[...])
cs95

20

এটি সত্যিই আপনার ক্ষেত্রে প্রযোজ্য নয় তবে এটি অন্যদের জন্য (5 মিনিট আগে আমার মতো) জেনে রাখা সহায়ক হতে পারে। কারও একাধিকের যদি একই নাম থাকে:

                         value
Trial        Trial
    1              0        13
                   1         3
                   2         4
    2              0       NaN
                   1        12
    3              0        34 

df.reset_index(inplace=True) ব্যর্থ হবে, কারণ তৈরি করা কলামগুলির একই নাম থাকতে পারে না।

সুতরাং df.index = df.index.set_names(['Trial', 'measurement'])আপনাকে পেতে মাল্টিডেক্সের নতুন নামকরণ করতে হবে:

                           value
Trial    measurement       

    1              0        13
    1              1         3
    1              2         4
    2              0       NaN
    2              1        12
    3              0        34 

এবং তারপরে df.reset_index(inplace=True)কবজির মতো কাজ করবে।

আমি এই সমস্যাটির মুখোমুখি হয়েছি বছর এবং মাসে গ্রুপিংয়ের পরে ডেটটাইম-কলামে (সূচী নয়) বলা হয়েছিল live_date, যার অর্থ বছর এবং মাস উভয়ই নামকরণ করা হয়েছিল live_date


1
কীভাবে আপনার পরীক্ষার মানগুলি পুনরাবৃত্তি করতে পারে? আমার একই সমস্যা ছিল এবং আমার মানগুলি সেগুলি পুনরাবৃত্তি না করে এটি কাজ করে।
ধনী

4

@ সিএস 95 যেমন একটি মন্তব্যে উল্লিখিত হয়েছে, কেবলমাত্র একটি স্তর ছাড়তে, ব্যবহার করুন:

df.reset_index(level=[...])

এটি পুনরায় সেট করার পরে আপনার পছন্দসই সূচকটিকে নতুন করে সংজ্ঞায়িত করা এড়ায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.