先卖个关子:你有没有遇到过这样的excel表格,明明是同一收货人的信息,因为有多个商品,被拆成了好几行。现在想把这些行合并为一行,把所有商品及数量塞到一个单元格里。针对这个问题,用python来解决,仅13行代码就能搞定。import pandas as pddf = pd.read_excel(r"E:\快递明细.xlsx")address_dict = {"收货人":[],"收货人电话":[],"地址":[],"商品名称及数量":[]}for _,row in df.iterrows(): if not pd.isna(row.iloc[4]): address_dict["收货人"].append(row.iloc[2]) address_dict["收货人电话"].append(row.iloc[3]) address_dict["地址"].append(row.iloc[4]) address_dict["商品名称及数量"].append(f"{row.iloc[0]}*{row.iloc[1]}") else: address_dict["商品名称及数量"][-1] += f"{row.iloc[0]}*{row.iloc[1]}"df = pd.DataFrame.from_dict(address_dict)df.to_excel(r"E:\快递明细_合并后.xlsx",index=False)
import pandas as pddf = pd.read_excel(r"E:\快递明细.xlsx")
在这里使用了pandas来读取excel文件,pandas是数据清洗整理的强大工具。address_dict = {"收货人":[],"收货人电话":[],"地址":[],"商品名称及数量":[]}for _,row in df.iterrows(): if not pd.isna(row.iloc[4]): address_dict["收货人"].append(row.iloc[2]) address_dict["收货人电话"].append(row.iloc[3]) address_dict["地址"].append(row.iloc[4]) address_dict["商品名称及数量"].append(f"{row.iloc[0]}*{row.iloc[1]}") else: address_dict["商品名称及数量"][-1] += f"{row.iloc[0]}*{row.iloc[1]}"
这段代码首先判断当前行“地址”是否为空,如果不为空,说明是一个新的收货人,把所有字段追加到列表;如果为空,则说明是上一条的延续,只把商品拼接到列表的最后一个元素后面。df = pd.DataFrame.from_dict(address_dict)df.to_excel(r"E:\快递明细_合并后.xlsx",index=False)
这里借用pandas的强大功能,把字典转换为标准的DataFrame,并直接输出为新的Excel文件。如果你觉得这篇文章对你有所帮助,欢迎转发给身边需要的朋友。