DataFrame案例:把数据变成指定格式数据(字符串分割、清洗、合并、重新建立索引)

数据建模之前,我们从数据部门拿到数据,但是这些数据的格式往往并不是我们可以直接使用的,比如下面表中的数据(左:原数据格式)。

原数据格式id自成一列,这个很好,但是标签和标签的置信度(这个id属于这个标签的可能性) 都在一个单元格里,仅用空格分隔开来,这对数据处理的过程中很不方便。

我们需要将数据转化成右图格式(右:所需数据格式),这有利于我们用id和其他表格中的数据匹配。               

原数据格式:id标签  所需数据格式: id tag tag置信度
 222201数学老师 0.67 父亲 0.87 儿子 0.77   222201数学老师0.67
 222202全职太太 0.56 孕妈 0.45   222202全职太太0.56
 222203大学生 0.33 服务员 0.48 社团主席 0.68   222203 大学生0.33
 222204父亲 0.79 服务员 0.56    222204父亲 0.79
 222205语文老师 0.89   222205语文老师0.89
 222206教导员 0.86 数学老师 0.74    222206教导员0.86
 222207大学生 0.65    222207大学生0.65

Python代码:

import pandas as pd
 
datafile = u'D:\\pythondata\\learn\\split.xlsx'
data = pd.read_excel(datafile)
 
n = 3 #n表示一个id最多有多少个标签
names=data['标签'].str.split(' ',expand=True) #将标签列按照空格分割数据
names.columns=['tag','tag置信度'] * n  #分割为多列之后为列重命名
 
data_total = pd.DataFrame(columns=['id', 'tag', 'tag置信度'])#设置一个空的DataFrame
for i in range(n):
    data_0i = pd.concat([data.iloc[:,:1], names.iloc[:,i*2:(i+1)*2]], axis = 1, join='outer', sort=False)
    data_0i = data_0i.dropna()#删除包含空值的行
    data_total = pd.concat([data_total, data_0i],axis=0)#向下合并数据
    data_total = data_total.reset_index(drop = True)#重新建立索引,代替原有的索引
print(data_total)

在实现这个格式转化的过程中,我们涉及到分割函数 split()、合并函数 concat()、删除缺失值函数 dropna()、建立索引 reset_index()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值