मेरे पास एक पांडा डेटाफ़्रेम है जो अनिवार्य रूप से 2 कॉलम और 9000 पंक्तियाँ हैं

CompanyName  |  CompanyAddress

और पता फॉर्म में है

Line1, Line2, ..LineN, PostCode

यानी मूल रूप से एक स्ट्रिंग (या dtype 'ऑब्जेक्ट') में अल्पविराम से अलग किए गए आइटमों की अलग-अलग संख्या, और मैं केवल पोस्ट कोड यानी आइटम को फ़ील्ड में अंतिम कॉमा के बाद खींचना चाहता हूं

मैंने डॉट नोटेशन स्ट्रिंग मैनिपुलेशन सुझावों का प्रयास किया है (संभवतः बुरी तरह से):

df_address['CompanyAddress'] = df_address['CompanyAddress'].str.rsplit(', ') 

जो सिर्फ खेतों के चारों ओर '[ ]' डालता है - मुझे किसी भी विभाजित/विभाजित स्ट्रिंग के अंतिम घटक को अलग करने की कोशिश करने में कोई सफलता नहीं मिली, maxsplit त्रुटियों को लात मार रहा है।

EdChums की पंडों ने कॉलम को कई में विभाजित करने के बाद मुझे कुछ हद तक सफलता मिली अल्पविराम द्वारा कॉलम

pd.concat([df_address[['CompanyName']], df_address['CompanyAddress'].str.rsplit(', ', expand=True)], axis=1)

हालांकि, पोस्टकोड को अलग करते हुए, यह सिर्फ कई कॉलम बनाता है और पोस्ट कोड कॉलम 3-6 में है ... समान रूप से अच्छा नहीं है।

यह अविश्वसनीय रूप से करीब लगता है, कृपया सलाह दें।

    EmployerName    Address
0   FAUCET INN LIMITED  [Union, 88-90 George Street, London, W1U 8PA]
1   CITIBANK N.A    [Citigroup Centre,, Canary Wharf, Canada Squar...
2   AGENCY 2000 LIMITED     [Sovereign House, 15 Towcester Road, Old Strat...
3   Transform Trust     [Unit 11 Castlebridge Office Village, Kirtley ...
4   R & R.C.BOND (WHOLESALE) LIMITED    [One General Street, Pocklington Industrial Es...
5   MARKS & SPENCER FINANCIAL SERVICES PLC  [Marks & Spencer Financial, Services Kings Mea...
2
BAC83 4 अप्रैल 2018, 23:51

2 जवाब

Rsplit एक सूची देता है, स्रोत लाइन में अंतिम तत्व प्राप्त करने के लिए rsplit(',')[0] प्रयास करें

0
Cmaster 4 अप्रैल 2018, 21:02

बस मौजूदा कॉलम को 2 कॉलम में rsplit करें - मौजूदा कॉलम और नया कॉलम। या दो नए यदि आप मौजूदा कॉलम को बरकरार रखना चाहते हैं।

df['Address'], df['PostCode'] = df['Address'].str.rsplit(', ', 1).str

संपादित करें: चूंकि ओपी का पता कॉलम इसमें 1 स्ट्रिंग वाली एक सूची है, यहां इसके लिए विशेष रूप से एक समाधान है:

df['Address'], df['PostCode'] = df['Address'].map(lambda x: x[0]).str.rsplit(', ', 1).str
0
Joe Samanek 4 अप्रैल 2018, 22:18