मेरे पास एक कॉलम के साथ एक पांडा डेटाफ्रेम है, जिसे मुझे साफ करने की आवश्यकता है, क्योंकि डेटा में आवश्यक प्रारूप नहीं है:

df = pd.DataFrame({'item': ["1","2","3","4","5","6"], 'store': ["a [note 3]","b  [note 98]","c ","a 
[note 222]","b","c"]})
print(df)

item         store
0    1    a [note 3]
1    2  b  [note 98]
2    3            c 
3    4  a [note 222]
4    5             b
5    6             c

कॉलम, 'store', को इस तरह बदला जाना चाहिए:

 item store
0    1     a
1    2     b
2    3     c
3    4     a
4    5     b
5    6     c
2
Juan David 16 पद 2020, 02:27

2 जवाब

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

ओपनिंग स्क्वायर ब्रैकेट से विभाजित करें और परिणामी सूची में पहला इंडेक्स वैल्यू चुनें।

df['store'] = df.store.str.split('\[').str[0]
3
Trenton McKinney 16 पद 2020, 02:49

आपको नियमित अभिव्यक्ति की आवश्यकता नहीं है। बस अंतरिक्ष में विभाजित करें और पहला चरित्र लें।

df['store'] = df['store'].apply(lambda x: x.split()[0])

यदि आपको रेगेक्स की आवश्यकता समाप्त हो जाती है, तो आप निकालने का उपयोग कर सकते हैं

df['store'] = df['store'].str.extract('^([a-z])')

यदि आपके पास ब्रैकेट से पहले एक से अधिक वर्ण हैं

df['store'] = df['store'].str.extract('^(.+?)(?=\[|$)')
2
Chris 16 पद 2020, 17:26