如何[u]使用python将excel中每行的数据按照要求重新排列?
本帖最后由 施华蔻洗发水 于 2022-11-18 16:22 编辑具体问题如下:
给出excel表(1):
使用python将表中数据按照整数部分大小排列,且要保证整数部分相同的数据在同一列
排列后的成果表截图如下:
注:实际数据量几万条,不可能excel一个一个的点,需要python完成自动化排序。 我excel不是很会,排序会点,你应该会excel吧 zhangjinxuan 发表于 2022-11-17 19:58
我excel不是很会,排序会点,你应该会excel吧
数据量很大,不能一个一个的点,需要python完成自动化 施华蔻洗发水 发表于 2022-11-17 20:42
数据量很大,不能一个一个的点,需要python完成自动化
不过Python内置的排序时间也不高啊 我不太会excel,没有学过,不过排序会一点,要不我就写排序的函数吧
今天有点晚了,明天再来吧 本帖最后由 阿奇_o 于 2022-11-17 21:03 编辑
假设你会点Pandas和Numpy,可以这样(也就十来行代码^_):
import pandas as pd, numpy as np
data = {'a': , 'b':, 'c':} # 测试数据(实际可以用pd.read_excel()读取xlsx文件)
df = pd.DataFrame(data)
df
a b c
01.202.10 3.03
12.017.0110.29
23.063.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
01.22.013.03 NaN5.11 NaN7.01 NaN NaN10.29
1NaN2.103.06 NaN NaN NaN NaN NaN NaN NaN
2NaN NaN3.06 NaN NaN NaN NaN NaN NaN NaN
3NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
res.to_excel('处理结果.xlsx', index=False)
你结果表E列和F列数据如果要那样排的话,是很不好搞啊。你那依据是什么呢? 本帖最后由 cflying 于 2022-11-17 21:26 编辑
除了pandas,用excel的库也可以实现,逐行读取为list,然后循环判断该元素整数位,然后根据结果插入到临时list中(按位),缺失的为空,然后逐行重新写入excel即可。
其实用openpyxl也就是几行代码的事情,例如sheet[行号]就可以读取整行,然后循环读出value再判断整数,然后用sheet.append写入,例如sheet.append()也就整行写入了 学习下~ 嘶.....你这确实不好搞 前排学习{:10_256:} 前排学习{:10_256:}
页:
[1]