Python实现HBase(txt)转换为dataframe

PYTHON实现HBASE数据格式的转换

原始数据格式,需要将列族转换列,detail列中jiason对象需要提出并列在这里插入图片描述
转换结果如下
在这里插入图片描述
具体实现代码

import  pandas as pd
#读取txt数据,对原始数据行进行分割,按照或分割,重命名
df=pd.read_csv("C:\\Users\\*****.txt",encoding='gbk',engine='python',sep='column=|timestamp=|value=',names=['row_key','type','timestamp','value'])
#切割后,需要合并row_key,将行变成列,设置series二级索引
df=df.set_index(["row_key","type"])["value"]
#使用unstack方法,series二级索引变成列,生成dataframe
df=df.unstack()
#可以通过 rename_axis(index=, columns=) 来给坐标轴重命名,再给索引重命名
df=df.rename_axis(columns=None).reset_index()
#重新设置列名
df.columns=['row_key','detail','cantype','condition','creattime','creatuser','imsi','reporttime','source','transactionid','vin']
#准备提取“detail”列jason对象,第一步使用eval完成obj-》str-》dict转换
df['detail']=df['detail'].map(lambda x:eval(str(x)))
#使用apply(lambda x:pd.series(x)),因为我们这里的值是一个字典, 而Series接收一个字典的话, 那么字典的key就是索引, value就是值
# 在扩展成DataFrame的时候同样会考虑到字典中所有的key, 有多少个不重复的key就会生成多少个列
# 如果该行没有对应的值则使用NaN填充
tmp=df['detail'].apply(pd.Series)
#完成dataframe合并
df[tmp.columns]=tmp
print(type(df['vin'].values))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值