(脚本)Python使用dataFrame操作Excel(将重复行的第二列拼接起来)

一、需求说明

Excel 中有些重复的行,比如第一个字段是 id,以这个字段判断行是不是重复的,若是重复的话连接第二个字段,如下面中,保留的应该是:1669 东寮村、揭东区林场

二、直接上代码

之前有朋友建议用 xlrd 操作,然后保存为 Excel 或者 CSV 的话用 openpyxl,我当时试过,很麻烦,就又用回来 dataFrame 了,十几分钟就做出来了。

直接读取的是Excel表格的数据,最终保存为CSV格式或者Excel格式:

import pandas as pd
import csv

excelFile = r'F:\d3\1216\001.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))
pmList = df[['ID']].values.T.tolist()[:][0]  # 获取ID列的值
pmList = list(set(pmList))  # 排除重复值
sum_list = [['ID', 'ZLDWMC']]
for pm in pmList:    # 循环id列的值
    temp = []
    dfByPM = df.loc[df['ID'] == pm]
    temp.append(pm)
    for col in dfByPM.columns:
        sumValue = ''
        if col == 'ZLDWMC':
            for index in range(len(dfByPM[col].values)):  #dfByPM[col].values里面保存的是ID号重复的第二列的值,并且用list方式保存着
                testValues = dfByPM[col].values[index]
                if index == (len(dfByPM[col].values)-1):
                    sumValue = sumValue + testValues  # 若是最后一个,则不用逗号连接
                else:
                    sumValue = sumValue + testValues + "," # 若不是最后一个,用逗号连接两个单元格的值
            temp.append(sumValue)
    sum_list.append(temp)

# 方法一:将 list 保存到 csv 文件中
with open('F:/d3/1216/test.csv', 'w', newline='') as csvfile:
    writer  = csv.writer(csvfile)
    for row in sum_list:
        writer.writerow(row)


# 方法二:将 list 保存到 excel 表中
output = open('F:/d3/1216/data.xls','w',encoding='gbk')
output.write('ID\tZLDWMC\n')
for i in range(len(sum_list)):
	for j in range(len(sum_list[i])):
		output.write(str(sum_list[i][j]))    #write函数不能写int类型的参数,所以使用str()转化
		output.write('\t')   #相当于Tab一下,换一个单元格
	output.write('\n')       #写完一行立马换行
output.close()

# 方法三:将 list 保存到 csv 文件中
name = ['ID', 'ZLDWMC']
test = pd.DataFrame(columns=name, data=sum_list)  # 数据有三列,列名分别为one,two,three
print(test)
test.to_csv('F:/d3/潘工/1216/test.csv', encoding='gbk')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值