পান্ডের ডেফ্রেমে শিফট কলামটি একের পর এক?


90

আমি একটি পান্ডাস ডেটা ফ্রেম পেয়েছি। আমি আমার একটি কলাম 'ল্যাগ' করতে চাই। অর্থ, উদাহরণস্বরূপ, পুরো কলামটি 'gdp' একের পর এক স্থানান্তরিত করে এবং তারপরে অবশিষ্ট সারির নীচে সমস্ত অতিরিক্ত ডেটা সরিয়ে ফেলতে হবে যাতে সমস্ত কলাম আবার সমান দৈর্ঘ্যের হয়।

df =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7

df_lag =
    y  gdp  cap
0   1    3    5
1   2    7    9
2   8    4    2
3   3    7    7

কোন উপায় এই কাজ করতে?

উত্তর:


159
In [44]: df['gdp'] = df['gdp'].shift(-1)

In [45]: df
Out[45]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7
4  6  NaN    7

In [46]: df[:-1]                                                                                                                                                                                                                                                                                                               
Out[46]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7

4
কেবল ব্যবহার করুন df.dropna()এবং এটি আপনাকে নামার জন্য সারিগুলির সংখ্যা উল্লেখ না করে সমস্ত NaN সারি ফেলে দেবে।
আর্মানড্ডুপ্লেসিস

8

শিফট কলাম জিডিপি আপ:

df.gdp = df.gdp.shift(-1)

এবং তারপরে শেষ সারিটি সরিয়ে ফেলুন


4

উদাহরণস্বরূপ 5 টি মান সহজেই স্থানান্তরিত করতে এবং NaN সারিগুলি থেকেও মুক্তি পেতে আপনার দ্বারা স্থানান্তরিত মানগুলির সংখ্যার উপর নজর রাখা ছাড়া:

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()


0

প্রথমে কলামটি শিফট করুন:

df['gdp'] = df['gdp'].shift(-1)

দ্বিতীয়টি শেষ সারিটি সরিয়ে ফেলুন যাতে একটি NaN সেল রয়েছে:

df = df[:-1]

তৃতীয় সূচকটি পুনরায় সেট করুন:

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