鱼C论坛

 找回密码
 立即注册
查看: 3058|回复: 11

如何[u]使用python将excel中每行的数据按照要求重新排列?

[复制链接]
发表于 2022-11-17 19:41:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 施华蔻洗发水 于 2022-11-18 16:22 编辑

具体问题如下:
给出excel表(1):

9a61c4d94b08e383834aa8fe1ea1794.png

使用python将表中数据按照整数部分大小排列,且要保证整数部分相同的数据在同一列

排列后的成果表截图如下:

成果.png


注:实际数据量几万条,不可能excel一个一个的点,需要python完成自动化排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-17 19:58:42 | 显示全部楼层
我excel不是很会,排序会点,你应该会excel吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-17 20:42:11 | 显示全部楼层
zhangjinxuan 发表于 2022-11-17 19:58
我excel不是很会,排序会点,你应该会excel吧

数据量很大,不能一个一个的点,需要python完成自动化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 20:44:25 | 显示全部楼层
施华蔻洗发水 发表于 2022-11-17 20:42
数据量很大,不能一个一个的点,需要python完成自动化

不过Python内置的排序时间也不高啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 20:46:04 | 显示全部楼层

回帖奖励 +2 鱼币

我不太会excel,没有学过,不过排序会一点,要不我就写排序的函数吧

今天有点晚了,明天再来吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 20:59:17 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-11-17 21:03 编辑

假设你会点Pandas和Numpy,可以这样(也就十来行代码^_):
import pandas as pd, numpy as np 
data = {'a': [1.2, 2.01, 3.06], 'b':[2.1, 7.01, 3.06], 'c':[3.03, 10.29, 5.11]}    # 测试数据(实际可以用pd.read_excel()读取xlsx文件)
df = pd.DataFrame(data)
df
      a     b      c
0  1.20  2.10   3.03
1  2.01  7.01  10.29
2  3.06  3.06   5.11
r = range(int(df.min().min()), int(df.max().max())+1)
res_data = {f'{i}': np.sort(df[(df>=i) & (df<i+1)].to_numpy().flatten()) for i in r}
res = pd.DataFrame(res_data)
res
     1     2     3   4     5   6     7   8   9     10
0  1.2  2.01  3.03 NaN  5.11 NaN  7.01 NaN NaN  10.29
1  NaN  2.10  3.06 NaN   NaN NaN   NaN NaN NaN    NaN
2  NaN   NaN  3.06 NaN   NaN NaN   NaN NaN NaN    NaN
3  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
4  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
5  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
6  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
7  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
8  NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN

res.to_excel('处理结果.xlsx', index=False)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 21:07:01 | 显示全部楼层
你结果表E列和F列数据如果要那样排的话,是很不好搞啊。你那依据是什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 21:09:58 | 显示全部楼层

回帖奖励 +2 鱼币

本帖最后由 cflying 于 2022-11-17 21:26 编辑

除了pandas,用excel的库也可以实现,逐行读取为list,然后循环判断该元素整数位,然后根据结果插入到临时list中(按位),缺失的为空,然后逐行重新写入excel即可。
其实用openpyxl也就是几行代码的事情,例如sheet[行号]就可以读取整行,然后循环读出value再判断整数,然后用sheet.append写入,例如sheet.append([1.1,2.04,'',4.5,'',6.44])也就整行写入了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-17 22:01:11 | 显示全部楼层
学习下~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 22:18:26 | 显示全部楼层
嘶.....你这确实不好搞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-18 10:41:03 | 显示全部楼层
前排学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-18 12:10:12 | 显示全部楼层

回帖奖励 +2 鱼币

前排学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 16:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表