用空值拆分 Python 中的字符串
Split String in Python with Empty Values
我有一列字符串,其中包括两个唯一的列 - 一列包含两个字母,然后是一列 Y 或 E。在这两种情况下,它们并不总是被填充。我希望将它们分成两个新列:
import pandas as pd
d={'col1':['AD','Y','E','AD E','WZ E'],
'col1_new':['AD','','','AD','WZ'],
'col2_new':['','Y','E','E','E']}
pd.DataFrame(d)
有什么建议吗?
您可以使用正则表达式来提取两部分:
df[['col1_new', 'col2_new']] = (df['col1'].str.extract('(\w{2})?\s*(\w)?')
.fillna('')
)
输出:
col1 col1_new col2_new
0 AD AD
1 Y Y
2 E E
3 AD E AD E
4 WZ E WZ E
正则表达式
(\w{2})? # capture 2 ({2}) "word" characters (\w), optionally (?)
\s* # match zero or more (*) spaces (\s)
(\w)? # capture 1 "word" character, optionally
我有一列字符串,其中包括两个唯一的列 - 一列包含两个字母,然后是一列 Y 或 E。在这两种情况下,它们并不总是被填充。我希望将它们分成两个新列:
import pandas as pd
d={'col1':['AD','Y','E','AD E','WZ E'],
'col1_new':['AD','','','AD','WZ'],
'col2_new':['','Y','E','E','E']}
pd.DataFrame(d)
有什么建议吗?
您可以使用正则表达式来提取两部分:
df[['col1_new', 'col2_new']] = (df['col1'].str.extract('(\w{2})?\s*(\w)?')
.fillna('')
)
输出:
col1 col1_new col2_new
0 AD AD
1 Y Y
2 E E
3 AD E AD E
4 WZ E WZ E
正则表达式
(\w{2})? # capture 2 ({2}) "word" characters (\w), optionally (?)
\s* # match zero or more (*) spaces (\s)
(\w)? # capture 1 "word" character, optionally