我有一列包含值。我想根据正则表达式拆分它。如果正则表达式匹配,原始值将替换为拆分的左侧。新列将包含拆分的右侧。
下面是一些示例代码。我觉得我很接近,但它不太管用。
import pandas as pd
import re
df = pd.DataFrame({ 'A' : ["test123","foo"]})
// Regex example to split it if it ends in numbers
r = r"^(.+?)(\d*)$"
df['A'], df['B'] = zip(*df['A'].apply(lambda x: x.split(r, 1)))
print(df)
在上面的示例中,我希望得到以下输出
A B
0 test 123
1 foo
我是 Python 的新手,我认为这是可行的方法。但是,看来我还没有完全达到目标。有人能帮我改正这个例子吗?
请您参考如下方法:
只是基于你自己的正则表达式
df.A.str.split(r,expand=True).replace('',np.nan).dropna(thresh=1,axis=1).fillna('')
Out[158]:
1 2
0 test 123
1 foo
df[['A','B']]=df.A.str.split(r,expand=True).replace('',np.nan).dropna(thresh=1,axis=1).fillna('')
df
Out[160]:
A B
0 test 123
1 foo
