python - 遍历 excel 文件,将列添加到系列中,并使用 Panda 库保存结果
问题描述
使用 Python 的 Panda 库,如何遍历一个 excel 文件,向 Series 添加一列,然后将结果写入文件?下面是我的尝试,但是当我附加到系列时,列会变成行。
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import re
df1 = pd.read_excel('file1.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('file2.xlsx', sheet_name='Sheet1')
writer = pd.ExcelWriter('Export.xlsx')
for index1, row1 in df1.iterrows():
account1= str(row1['ACCOUNT1'])
not_found = 1
for index2, row2 in df2.iterrows():
account2= str(row2['ACCOUNT2'])
if re.search(account1, account2, re.IGNORECASE):
row1["Results"] = "Found"
not_found = 0
counter+=1
print("found " + counter)
data_writer = row1.append(row1)
break
if not_found ==1:
row1["Results"] = "Found"
counter += 1
print("not found " + counter)
data_writer = row1.append(row1)
data_writer.to_excel(writer,'Sheet1')
writer.save()
print("Finished")
以下是输入文件和预期输出:
解决方案
我想通了,但我只是希望有一种更短的方法可以在 DataFrame 中附加现有数据,而无需键入所有列。我只想在数据框中添加一个“结果”列以找出匹配的列。
df1 = pd.read_excel('file1.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('file2.xlsx', sheet_name='Sheet1')
writer = pd.ExcelWriter('Export.xlsx')
counter =0
new_dataframe = pd.DataFrame()
for index1, row1 in df1.iterrows():
account1= str(row1['ACCOUNT1'])
not_found = 1
for index2, row2 in df2.iterrows():
account2= str(row2['ACCOUNT2'])
if re.search(account1, account2, re.IGNORECASE):
not_found = 0
counter+=1
print("found " + str(counter))
new_dataframe = new_dataframe.append(pd.DataFrame({'Results': "Found",
'ACCOUNT1': account1,
'customer':row1['customer'],
'state':row1['state'],
'city':row1['city'] },
index=[0]),
ignore_index=True)
break
if not_found ==1:
counter += 1
print("not found " + str(counter))
new_dataframe = new_dataframe.append(pd.DataFrame({'Results': "Not Found",
'ACCOUNT1': account1,
'customer':row1['customer'],
'state':row1['state'],
'city':row1['city'] }, index=[0]), ignore_index=True)
new_dataframe.to_excel(writer,'Sheet1')
writer.save()
print("Finished")
推荐阅读
- python - Scrapy Spider 在处理中出现错误
- php - 在 mysql 中,如何使用附加过滤器获取基于 php 数组的数据?
- php - 120 秒后 504
- sql - 当我需要从连接在一起的 2 个表和另一个表中插入时,如何在 sql 中使用 insert into from
- sql - 将 pandas 枢轴转换为 sql 枢轴(代码帮助)
- javascript - 可以将 CSS 背景图像列为 HTML 图像标记的脚本?
- c# - CA1001 在包含的扩展类(初学者类)上实现 IDisposable
- sql-server - 如何从一个表中获取日期并插入另一个表
- converse.js - converse.js:如何在登录表单中预填充用户名字段
- javascript - 比较嵌套对象中的值