我的pandas数据框包含一列a,其内容为'<152/abcx>' ,'<42/da>', '<2/kiw>'
。我要做的是基于内容,删除“ <”,“>”,然后创建两个新的单独列,例如此列b:152 ; 42; 2
,列c:'abcx', 'da', 'kiw'
。
df.a.str[df.a.str.find('<')+1:df.a.str.find('/')-1]
我尝试的代码不起作用
答案 0 :(得分:2)
尝试使用此代码:
df = pd.DataFrame({'a': ['<152/abcx>' ,'<42/da>', '<2/kiw>']})
df = df['a'].str.strip('<>').str.split('/', expand=True)
df.columns = ['columnb', 'columnc']
print(df)
输出:
columnb columnc
0 152 abcx
1 42 da
2 2 kiw
答案 1 :(得分:0)
这是我想您正在找到的解决方案:
import pandas as pd
def f(x):
x = x.split('/')
return pd.Series([x[0].replace('<',''),x[1].replace('>','')])
df =pd.DataFrame({'a':['<152/abcx>' ,'<42/da>', '<2/kiw>']})
df[['c1','c2']] = df['a'].apply(f)
print(df)
输出:
a c1 c2
0 <152/abcx> 152 abcx
1 <42/da> 42 da
2 <2/kiw> 2 kiw
[Finished in 2.7s]