python pandas两行带分隔符号的列,转换成多行

两行带分隔符号的列,转换成多行

地市id挂高方位角
三国id_132\32\22\3250\150\300
三国id_225\25\2570\230\350
三国id_341\41\415\110\200
三国id_435\35\3590\170\270
三国id_528\28\2855\200\330
三国id_630\27\2760\195\310
三国id_731\31\310\120\240
三国id_825\25\2530\240\233\315

第一种方法:导入上表数据为data_B  导出data_res 

data_z = pd.DataFrame()
for name,data_1,data_2 in zip(data_B['新规划站号'],data_B['挂高'],data_B['方位角']):
    try:
        data_t = pd.concat([pd.DataFrame(data_1.split('/'),columns=['挂高']),pd.DataFrame(data_2.split('/'),columns=['方位角'])],axis=1)
    except:
        data_t = pd.concat([pd.DataFrame([data_1],columns=['挂高']),pd.DataFrame([data_2],columns=['方位角'])],axis=1)
    data_t['新规划站号'] =name   
    data_z = data_z.append(data_t)

第二中方法:导入上表数据为data  导出df

t_list = []
for idx,row in data.iterrows():
    heighs = row['挂高'].split('\\')
    amzs = row['方位角'].split('\\')
    if len(heighs) == len(amzs):
        new_list = map(list,zip(heighs,amzs))
    elif len(heighs) > len(amzs):
        for i in range(len(heighs)-len(amzs)):
            amzs.append(' ')
        new_list = map(list,zip(heighs,amzs))
    elif len(heighs) < len(amzs):
        for i in range(len(amzs)-len(heighs)):
            heighs.append(' ')
        new_list = map(list,zip(heighs,amzs))
    for l in new_list:
        cols = [str(row['地市']),str(row['id'])]
        cols.extend(l)
        t_list.append(cols)
df = pd.DataFrame(t_list,columns = ['地市','id','挂高','方位角'])
dft_list = []
for idx,row in data.iterrows():
    heighs = row['挂高'].split('\\')
    amzs = row['方位角'].split('\\')
    if len(heighs) > len(amzs):
        for i in range(len(heighs)-len(amzs)):
            amzs.append(' ')
    elif len(heighs) < len(amzs):
        for i in range(len(amzs)-len(heighs)):
            heighs.append(' ')
    new_list = map(list,zip(heighs,amzs))
    for l in new_list:
        cols = [str(row['地市']),str(row['id'])]
        cols.extend(l)
        t_list.append(cols)
df = pd.DataFrame(t_list,columns = ['地市','id','挂高','方位角'])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值