excle同一列数据相同合并

项目场景:

excle同一列数据相同合并


问题描述:

在excle里有大量的相同数据在同一列需要合并,手工太费时间:


解决方案:

import pandas as pd
from openpyxl import load_workbook
result_file  =  r'C:\Users\IT-huangyj\Desktop\出货数据 - 副本.xlsx'
wb = load_workbook(result_file)
ws = wb['出货信息']

# 获取第一列数据
type_list = []
i = 2
while True:
    r = ws.cell(i, 1).value
    if r:
        type_list.append(r)
    else:
        break
    i += 1

# 判断合并单元格的始末位置
s = 0

flag = type_list[0]
for i in range(len(type_list)):
    if type_list[i] != flag:
        flag = type_list[i]
        e = i - 1
        if e >= s:
            ws.merge_cells("A" + str(s + 2) + ":A" + str(e + 2))
            s = e + 1
    if i == len(type_list) - 1:
        e = i
        ws.merge_cells("A" + str(s + 2) + ":A" + str(e + 2))

wb.save(result_file)

成果截图:

在这里插入图片描述

### 回答1: 如果您的问题是要将某一中相邻的相同内容合并为一个单元格,可以使用pandas库中的`groupby()`函数和`agg()`函数来实现。 例如,我们假设有一个DataFrame df,其中有一为"col_name",我们要将其中相邻的相同内容合并为一个单元格。可以使用以下代码: ```python import pandas as pd df = pd.DataFrame({ 'col_name': [1, 1, 2, 2, 2, 3, 4, 4, 4] }) # 将相邻的相同内容合并为一个单元格 df['col_name'] = df.groupby((df['col_name'] != df['col_name'].shift()).cumsum())['col_name'].transform(' '.join) print(df) ``` 输出结果为: ``` col_name 0 1 1 1 2 2 2 3 2 2 4 2 2 5 3 6 4 4 4 7 4 4 4 8 4 4 4 ``` 在上述代码中,`groupby()`函数将"col_name"中相邻的相同内容分成一组,然后对每个分组使用`transform()`函数,将该分组中的内容合并为一个单元格。最后再将合并后的结果赋值给"col_name"即可。 ### 回答2: 可以使用pandas库的groupby和agg函数实现将同一相同内容合并。 首先,使用pandas的read_excel函数读取需要处理的Excel文件,得到一个DataFrame对象。 然后,使用groupby函数按照需要合并进行分组,以此为基础进行聚合操作。可以使用agg函数来对分组后的数据进行聚合操作,例如使用join函数来将相同内容的单元格合并为一个字符串。 接着,将聚合后的结果写入原始的DataFrame对象中,可以使用pandas的loc函数来定位需要写入的单元格,并赋值为聚合后的结果。 最后,可以使用pandas的to_excel函数将处理完成的DataFrame对象写入Excel文件中。 总结起来,使用pandas的groupby、agg和to_excel函数可以方便地实现将单元格同一相同内容合并并写入的操作。 ### 回答3: 在pandas中,可以通过使用groupby函数以及聚合函数来实现将同一相同内容的单元格进行合并。 首先,我们需要加载pandas库,并读取需要进行操作的数据文件。假设我们的数据文件名为data.csv,其中包含了两数据,分别是"姓名"和"成绩"。我们可以使用以下代码进行读取: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 接下来,我们可以使用groupby函数将相同内容的单元格进行分组。在这个例子中,我们可以以"姓名"作为分组依据。代码如下: ```python grouped = df.groupby('姓名') ``` 然后,我们可以使用聚合函数来对每个分组进行操作。在这个例子中,我们可以使用第一个分组的成绩去覆盖其他分组的成绩。代码如下: ```python df['成绩'] = grouped['成绩'].transform(lambda x: x.iloc[0]) ``` 最后,我们可以将合并后的数据进行导出。代码如下: ```python df.to_csv('merged_data.csv', index=False) ``` 以上代码会将合并后的数据保存到名为merged_data.csv的文件中。 总结一下,我们可以通过使用groupby函数以及聚合函数来实现将pandas中同一相同内容的单元格进行合并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值