本文作者:云初冀北

python实现Excel多行多列的转换的示例

python实现Excel多行多列的转换的示例摘要: 前言使用pandas对Excel的多行和多列进行转换提示:以下是本篇文章正文内容,下面案例可供参考一、使用需求将上表中的多行多列数据转换成下表中的三列多行数据,需要做的就是将同一日...

?=前言

使用pandasExcel的多和多进行转换

提示:以下是本篇文章正文内容,下面案例可供参考

一、使用需求

python实现Excel多行多列的转换的示例

将上表中的多行多列数据转换成下表中的三列多行数据,需要做的就是将同一日期不同坐标的值汇总到一列数据。核心思想就是新建一列然后把原来的一行多列数据汇总成一列多行数据。不同日期的值汇总到一起,即完成多行多列的转换。

python实现Excel多行多列的转换的示例

二、使用步骤

1.引入

import Pandas as Pd

2.读入数据

df = pd.read_excel('源数据.xlsx')

3.将需要合并的列的列名先放在列表

Merge_list = list(df.loc[:, '75.951142 39.473421':].columns)#这里是坐标,是日期右边的列名,可以根据自己的表格改。

4.填充空值为0

df.loc[:, '75.951142 39.473421':] = df.loc[:, '75.951142 39.473421':].fillna(0)

5.添加新列,把待合并的所有列变成一个大字符串(传入函数处理)

# 定义函数来处理合并操作 def merge_values(s): # 每2列进行合并分隔符为|,2列与2列合并分割符为#,即 监测值和坐标 result = [] for IDx in range(0, len(s.values), 2):  # len(s.values)即df.loc[:,'学科':]的每一行的长度 ,第三个字段2为步长2即2个合并 result.append(f'{s[idx]}|{merge_list[idx]}')  # 生成一个列表,格式数值和坐标,这里merge_list[idx]是后面添加的坐标列 return '#'.join(result)  # 将列表用#号分割返回一个大字符串 格式为:检测值和坐标 # 添加新列,把待合并的所有列变成一个大字符串(传入函数处理) df['merge'] = df.loc[:, '75.951142 39.473421':].apply(merge_values, axis=1)

6.删除合并之前的列,保存id,name,merge列

df.drop(merge_list,axis=1,Inplace=True)

7.使用explode来变成多列

df['75.951142 39.473421'] = df['merge'].str.split('|').str[0]df['坐标'] = df['merge'].str.split('|').str[1]#这里添加新的坐标列df.drop(['merge'],axis=1,inplace=True)df['75.951142 39.473421'] = df['merge'].str.split('|').str[0] df['坐标'] = df['merge'].str.split('|').str[1]#这里添加新的坐标列 df.drop(['merge'],axis=1,inplace=True)

8.存储本地生成新的csv文件

df.to_EXCEL('转换后数据.xlsx', index=False)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了多行多列数据之间的转换的一个小案例,主要是利用Pandas来解决。

到此这篇关于Python实现Excel多行多列的转换的示例的文章就介绍到这了,更多相关python Excel多行多列转换内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,179人围观)参与讨论

还没有评论,来说两句吧...