अजगर: कैसे पंक्ति और अगली पंक्ति DataFrame.apply () विधि पारित करने के लिए?

वोट
0

मैं हजारों पंक्तियों के साथ DataFrame है। इसकी संरचना नीचे के रूप में है

     A    B    C     D 
 0   q   20    'f'
 1   q   14    'd'
 2   o   20    'a'

मैं वर्तमान पंक्ति और अगली पंक्ति का एक स्तंभ की तुलना करना चाहते। बराबर मैं तुलना पंक्ति जो अधिक से अधिक महत्व है की डी स्तंभ के लिए मूल्य कम है जो बी स्तंभ के मान जोड़ना चाहते हैं उन मूल्यों कर रहे हैं। तब मैं यह एक स्वैप प्रक्रिया की तरह है स्तंभ बी के ले जाई गईं स्तंभ मान निकालना चाहते हैं।

    A    B    C     D 
0   q   20    'f'   14
1   o   20    'a'

तरीकों धीमी गति से काम पर मैं, हजारों पंक्तियों और iloc, loc है। कम से कम मैं उपयोग करने के लिए DataFrame लागू विधि चाहते हैं। मैं कुछ कोड नमूने की कोशिश की लेकिन वे काम नहीं किया।

मैं नीचे के रूप में कुछ करना चाहता हूँ: DataFrame.apply (लैम्ब्डा पंक्ति: (पंक्ति, अगले (पंक्ति)) self.compare, अक्ष = 1))

मैं एक तुलना विधि है, लेकिन मैं तुलना विधि के लिए अगली पंक्ति पारित नहीं कर सका। मैं इसे कैसे विधि करने के लिए पारित कर सकते हैं? इसके अलावा, मैं तेजी से पांडा समाधान सुनने के लिए खुला रहा हूँ।

19/03/2020 को 21:58
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

बेस्ट के साथ ऐसा नहीं applyके रूप में यह धीमी गति से हो जाएगा; आप उपयोग कर देख सकते हैं shift, जैसे

df['A_shift'] = df['A'].shift(1)
df['Is_Same'] = 0
df.loc[df.A_shift == df.A, 'Is_Same'] = 1

थोड़ा अधिक जटिल अगर आप समूहों के भीतर बदलाव कर रहे हैं, लेकिन अभी भी संभव हो जाता है।

19/03/2020 को 22:03
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more