मैं इस टर्नरी स्थिति को कैसे लिख सकता हूं ताकि मेरे डेटा-फ्रेम में बूलियन कॉलम हो।

partenaire['topcodeclub'] = ''
for id, i in enumerate(partenaire.Adresse):
    i = str(i)
    r1 = re.findall(r"\d{5}",i)
    'True' if (r1[0][:2]==partenaire.basecodeclub[id])  else 'False'

मान लें कि मेरे पास दो कॉलम हैं जिनकी मैं हर पुनरावृत्ति में तुलना करता हूं। अगर यह सही है तो यह मेरे topcodeclub में गलत है कि उस कॉलम में True और false कैसे जोड़ें।

0
abdoulsn 5 पद 2019, 16:40

1 उत्तर

सबसे बढ़िया उत्तर

आपके डेटा फ्रेम को देखते हुए कुछ इस तरह दिखें:

                             Address basecodeclub
0           some false address 12345           12
1  whatever other address 67890 here           45
2                and more 34567 here           43
3           and even more 54321 then           54

आप str.extract का उपयोग Address कॉलम पर कर सकते हैं और basecodeclub से मिलान कर सकते हैं:

>>> df['Address'].str.extract(r'(\d{5})')[0].str[:2] == df['basecodeclub']

0     True
1    False
2    False
3     True
dtype: bool

बस इन मानों को topcodeclub पर असाइन करें:

>>> df['topcodeclub'] = df['Address'].str.extract(r'(\d{5})')[0].str[:2].eq(df['basecodeclub'])
                             Address basecodeclub  topcodeclub
0           some false address 12345           12         True
1  whatever other address 67890 here           45        False
2                and more 34567 here           43        False
3           and even more 54321 then           54         True

ज्यादातर मामलों में pandas में आप जो चाहते हैं उसे पूरा करने के लिए लगभग हमेशा एक वेक्टरकृत विधि होती है। आपको जितना हो सके फ्रेम को लूप करने से बचना चाहिए।

3
r.ook 5 पद 2019, 17:00