c=a['code2'].str.rsplit('[,|]',expand=True)
a=a['code2'].str.rsplit(',',expand=True)
c=a['code2'].rsplit('[,|]',expand=True)
b=a['code2'].str.split(',',expand=True)
b1=b[0].str.split('|',expand=True)
建议使用re.split 分隔符,或者你split两次也可以啊,先split | 然后在逗号
你先引用re,
re.split函数允许输入多个分隔符,你把逗号和|都作为分隔符去分割,这样偶数位置是你要的,奇数位置是要丢掉的,不用循环drop,写个切片
a[::2]就行了
描述太乱, 建议直接给出几条测试数据和要达成的最终效果, 你的已写的代码粘贴出来即可, 无需过多描述
import re
data = 'test,|test,|'
data = re.split(r'([\|,])', data)
print(data)
如果编码的长度是固定的,根据 | 分割后,截取后几位就可以了
参照这个实例介绍【【Python】分割字符串 空格、逗号,分号;】,链接:https://blog.csdn.net/YaoYee_21/article/details/119743685
import pandas as pd
def split_data(df):
l_len = len(df.columns)
res = df['code2'].str.split(',')
l_max = len(max(res, key = lambda x: len(x)))
for i in range(l_max):
t = [res[j][i].split('|')[0] if len(res[j]) > i else '' for j in range(len(res))]
df.insert(loc = l_len+i, column = i, value = t)
del df['code2']
data = [['1258', 'A111001_01|xx,A43|yy'], ['9485', 'A111001_01|bb,B123|cc'], ['1141', 'A0200101_01|aa,A020306|gggg,A11101_01|uuuu']]
df = pd.DataFrame(data, columns=['id1', 'code2'])
split_data(df)
print(df)
--result
id1 0 1 2
0 1258 A111001_01 A43
1 9485 A111001_01 B123
2 1141 A0200101_01 A020306 A11101_01
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!