ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python|excel分列--部分分列(pandas,concat)

2022-01-26 14:36:18  阅读:430  来源: 互联网

标签:分列 python title excel df2 -- pd


目录

一、问题

二、代码

三、步骤总结


一、问题

虽然excel里分列很简单但是要批量操作的话还是有点烦的。

在CSDN上找到很多使用pandas的分列教程,但是我想要达成的效果是:

原始数据共三列,第一列是我希望分列的,后面两列不想分,如何一起输出?

注:数据仅为示例并非真实数据

该表为各街道建设用地批而未供数据控规类型,希望得到的格式是:

第一列--街道

第二列--年份

第三列--类型

第四列--数量

第五列--面积

二、代码

这里我使用了easygui进行原数据输入

# 输入原始数据
msg = '输入'
title = '选择输入的excel文件'
filename = '*'
filetypes = ["*.xls"]
fileinpath = easygui.fileopenbox(msg, title, filename, filetypes)

df = pd.read_excel(fileinpath)

# 分列
df = pd.DataFrame((x.split('_') for x in df['tj']),
                  columns=['Jiedao', 'Data', 'Feature'])


# 读取原始表格后面的2列
cols = [1, 2]
df2 = pd.read_excel(fileinpath, usecols=cols)
df2.head()
df2 = pd.DataFrame(df2, columns=['Cnt_tj', 'Sum_AREA'])

# 合并,这里result是分列后得到的五列数据
result = pd.concat([df, df2], axis=1)

concat可以对两个数据框合并,axis参数是合并的方向。我这里相当于是两个数据框左右合并,就是1.如果是两部分希望上下合并的话参数设置为0.

输出excel

# 写出分列后的表格
msg = '分列后表格输出'
title = ''
filename = '*.xls'
filetypes = ["*.xls"]
fileoutpath1 = easygui.filesavebox(msg, title, filename, filetypes)
result.to_excel(fileoutpath1, index=False)

三、步骤总结

实现功能其实很简单,分为以下几步:

1、pandas读取原始数据,将需要分列的那一列在Dataframe里用split分列

2、读取原数据无需分列的部分

3、concat函数合并

4、pandas输出 to_excel

标签:分列,python,title,excel,df2,--,pd
来源: https://blog.csdn.net/weixin_58193881/article/details/122700542

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有