python鱼new 发表于 2021-4-13 14:35:21

python 处理excel表格,判断前几列相等,合并后面几列的数据

本帖最后由 python鱼new 于 2021-4-13 14:40 编辑

上个贴没说清楚,重新发一下

看图片,前面5列值都一样的话算重复的行,需要把这些重复行后面的数据合并下,其它行没有重复的保持不变。图片填充颜色一样的就是重复了。

阿奇_o 发表于 2021-4-13 14:35:22

本帖最后由 阿奇_o 于 2021-4-13 15:42 编辑

那就是 分组求和 。不难,但
小问题是,你这里的“需求量”列(第六列),图片1(处理后)数据没有求和(没合并),
所以,这一列,是否也是需要统计合并的?(你列名的颜色 也让我感到疑惑,到底是前五列,还是前六列)

先上代码吧,如

df = pd.read_excel('excel_data.xlsx', sheet_name='Sheet1')
print(df.columns)
df_g = df.groupby(list(df.columns[:5]))].sum()   # 备注(最后一列)为字符值,不做聚合计算
# print(df_g)
df_g.to_excel('excel_data_OK.xlsx')

python鱼new 发表于 2021-4-13 18:01:18

阿奇_o 发表于 2021-4-13 15:35
那就是 分组求和 。不难,但
小问题是,你这里的“需求量”列(第六列),图片1(处理后)数据没有求和( ...

大佬牛逼,第六列无所谓了

python鱼new 发表于 2021-4-13 18:11:51

阿奇_o 发表于 2021-4-13 14:35
那就是 分组求和 。不难,但
小问题是,你这里的“需求量”列(第六列),图片1(处理后)数据没有求和( ...

大佬这里可以微调一下吗,不要合并单元格

haoliang9324 发表于 2021-4-13 18:14:07

阿奇_o 发表于 2021-4-13 14:35
那就是 分组求和 。不难,但
小问题是,你这里的“需求量”列(第六列),图片1(处理后)数据没有求和( ...

df = pd.read_excel('excel_data.xlsx', sheet_name='Sheet1')

大佬,第1行这句代码中,pd 是什么意思,没看明白,烦请指导一下哈,感谢~~~

python鱼new 发表于 2021-4-13 18:38:48

haoliang9324 发表于 2021-4-13 18:14
df = pd.read_excel('excel_data.xlsx', sheet_name='Sheet1')

大佬,第1行这句代码中,pd 是什么意思 ...

pandas读取文件的

阿奇_o 发表于 2021-4-13 22:25:25

haoliang9324 发表于 2021-4-13 18:14
df = pd.read_excel('excel_data.xlsx', sheet_name='Sheet1')

大佬,第1行这句代码中,pd 是什么意思 ...

pd?当然是 功夫熊猫呀,2333
import pandas as pd
pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool,
built on top of the Python programming language.

阿奇_o 发表于 2021-4-13 22:38:40

本帖最后由 阿奇_o 于 2021-4-13 22:41 编辑

python鱼new 发表于 2021-4-13 18:11
大佬这里可以微调一下吗,不要合并单元格

取消合并,这估计pandas处理不来,openpyxl我不熟。。
跑步回来,查了查openpyxl,how to cancel the cell combined
然后,然后。。一个问题引发了若干个问题。。
嗯,最后代码看起来很简单,如:

wb = load_workbook('excel_data.xlsx')
ws = wb['Sheet2']#我这是‘Sheet2’里的测试数据
# 拆分被合并了的单元格
ws.unmerge_cells('A3:A4')
ws['A4'] = ws['A3'].value   # 对拆分后的单元格(单个),进行填充指定的值(左上角第一个单元格保留有原合并值)
但,拆分后其他的单元格怎么批量赋值呢?。。花了不少时间。。
# 官网有提供下面这方法,可难用的很。。
# for row in ws.iter_rows(MIN_ROW=4, MAX_ROW=10, MAX_COLUMN=1):
#   for cell in row:
#         print(cell)

# 版本原因这个糟糕的ws.iter_rows方法 还用不了(索性版本懒得换)
# 那还是用最简单的,一个个单元格处理
for i in range(4, 11):#准备填充A4:A10(注:这是示范多个如何处理,你可能只需要填充A4一个)
    # print(f'A{i}:' , ws['A{}'.format(i)].value)
    ws.value = ws['A3'].value

wb.save('excel_data_Unmerged.xlsx')

haoliang9324 发表于 2021-4-14 12:44:13

阿奇_o 发表于 2021-4-13 22:25
pd?当然是 功夫熊猫呀,2333
import pandas as pd

好的,知道啦,谢谢大佬

haoliang9324 发表于 2021-4-14 12:44:48

python鱼new 发表于 2021-4-13 18:38
pandas读取文件的

明白了,多谢~~

python鱼new 发表于 2021-4-14 13:23:32

阿奇_o 发表于 2021-4-13 22:38
取消合并,这估计pandas处理不来,openpyxl我不熟。。
跑步回来,查了查openpyxl,how to cancel the...

厉害啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

python鱼new 发表于 2021-4-14 13:38:17

阿奇_o 发表于 2021-4-13 22:38
取消合并,这估计pandas处理不来,openpyxl我不熟。。
跑步回来,查了查openpyxl,how to cancel the...

表格A3B3 C3要拆分,我添加了2行
页: [1]
查看完整版本: python 处理excel表格,判断前几列相等,合并后面几列的数据