पंडों में शिफ्ट कॉलम डेटाफ्रेम एक के बाद एक?


87

मुझे एक पांडा डेटाफ़्रेम मिला है। मैं अपने एक कॉलम को want लैग ’करना चाहता हूं। उदाहरण के लिए, उदाहरण के लिए, एक-एक करके पूरे कॉलम '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

इसे करने का कोई तरीका?

जवाबों:


155
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

1
बस का उपयोग करें df.dropna()और यह ड्रॉप करने के लिए पंक्तियों की संख्या निर्दिष्ट करने के लिए बिना सभी NaN पंक्तियों को छोड़ देगा।
आर्मंडडुपलेसिस

8

शिफ्ट कॉलम gdp अप:

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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.