उदाहरण कोड:

In [1]: import pandas as pd

In [2]: serie = pd.Series(['this#is#a#test', 'another#test'])

In [3]: serie.str.split('#', expand=True)
Out[3]:
         0     1     2     3
0     this    is     a  test
1  another  test  None  None

क्या विभाजित मानदंड स्ट्रिंग को अलग किए बिना विभाजित करना संभव है? उपरोक्त का आउटपुट होगा:

Out[3]:
         0     1     2     3
0     this   #is    #a #test
1  another #test  None  None

संपादित करें 1: वास्तविक उपयोग का मामला मिलान पैटर्न को बनाए रखना होगा, उदाहरण के लिए:

serie.str.split(r'\n\*\*\* [A-Z]+', expand=True)

और [ए-जेड]+ मेरे मामले में कदम संसाधित कर रहे हैं, जिन्हें मैं आगे की प्रक्रिया के लिए रखना चाहता हूं।

5
roirodriguez 31 जुलाई 2019, 13:53

3 जवाब

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

आप आगे एक सकारात्मक नज़र का उपयोग करके विभाजित हो सकते हैं। तो स्प्लिट पॉइंट पोस्टिवी लुक फॉरवर्ड एक्सप्रेशन से ठीक पहले का बिंदु होगा।

import pandas as pd

serie = pd.Series(['this#is#a#test', 'another#test'])
print(serie.str.split('(?=#)', expand=True))

आउटपुट

         0      1     2      3
0     this    #is    #a  #test
1  another  #test  None   None
5
Chris Doyle 31 जुलाई 2019, 14:04

कोशिश करें str.split('(#[a-z]+)', expand=True)

उदा:

serie = pd.Series(['this#is#a#test', 'another#test'])
print(serie.str.split('(#[a-z]+)', expand=True)
4
Rakesh 31 जुलाई 2019, 13:59

बस इसे प्रत्येक पंक्ति में जोड़ें:

In [1]: import pandas as pd

In [2]: serie = pd.Series(['this#is#a#test', 'another#test'])

In [3]: serie.str.split('#', expand=True) + '#'
Out[3]:
          0      1    2      3
0     this#    is#   a#  test#
1  another#  test#  NaN    NaN

In [4]: '#' + serie.str.split('#', expand=True)
Out[4]:
          0      1    2      3
0     #this    #is   #a  #test
1  #another  #test  NaN    NaN
0
Frank AK 31 जुलाई 2019, 13:58