मेरा डीएफ:
No A B C D
1 1 1 0 1
2 1 1 1 0
3 1 0 1 1
4 1 1 1 1
मैं ए या बी या सी या डी करना चाहता हूं और परिणाम को कॉलम में लिखना चाहता हूं।
No A B C D Result
1 1 1 0 1 1
2 1 1 1 0 1
3 1 0 1 1 1
4 1 1 1 1 1
...
तो विचार यह है कि परिणाम '1' है, भले ही ए, बी, सी या डी में एक '1' मौजूद हो।
4 जवाब
#if No is column
df['Result'] = df.iloc[:, 1:].any(axis=1).astype(int)
#if No is index
#df['Result'] = df.any(axis=1).astype(int)
अगर कुछ और कॉलम:
df['Result'] = df[['A','B','C','D']].any(axis=1).astype(int)
या:
df['Result'] = df[['A','B','C','D']].max(axis=1)
print (df)
No A B C D Result
0 1 1 1 0 1 1
1 2 1 1 1 0 1
2 3 1 0 1 1 1
3 4 1 1 1 1 1
उपयोग करने का प्रयास करें:
df['Result'] = df.drop('No', axis=1).max(1)
print(df)
आउटपुट:
No A B C D Result
0 1 1 1 0 1 1
1 2 1 1 1 0 1
2 3 1 0 1 1 1
3 4 1 1 1 1 1
अजीब तरह से, किसी ने भी साधारण |
ऑपरेटर के उपयोग का उल्लेख नहीं किया।
आपके प्रश्न का उत्तर
df['Result'] = df['A'] | df['B'] | df['C'] | df['D']
इसी तरह, अगर आप AND
जैसे अन्य ऑपरेशन करना चाहते हैं
df['Result'] = df['A'] & df['B'] & df['C'] & df['D']
मजेदार तरीकों की सूची में जोड़ने के लिए:
df_a['Result'] = df_a.eval('A + B + C').astype(bool)
फायदा यह है कि eval मेमोरी में इंटरमीडिएट टेबल नहीं बनाता है। यदि आपको बूल के बजाय स्पष्ट int की आवश्यकता है, तो आप निश्चित रूप से इसे कास्ट कर सकते हैं:
df_a['Result'] = df_a.eval('A + B + C').astype(bool).astype(int)
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।