帮对象处理所需数据时写的代码——第四弹(实现功能:根据表格一中的经济排名前五的地区,从表格二中匹配相应的县信息,并将匹配结果添加到表格一中的县列,最后保存到新的Excel文件中,两表格输入数据可根据需要选择)
目录
第一节:读取表格一和表格二的数据
这部分代码指定了表格一和表格二的文件路径,并使用pd.read_excel函数读取数据。其中,df1表示表格一的数据,address_column表示从表格一中提取的经济排名前五的地区列数据。同样地,df2表示表格二的数据,region_column表示从表格二中提取的县列数据。
import pandas as pd
from tqdm import tqdm
# 读取表格一和表格二
file1 = r"C:\Users\aa\Desktop\1.xlsx"
file2 = r"C:\Users\aa\Desktop\2.xlsx"
# 读取表格一的数据
df1 = pd.read_excel(file1)
address_column = df1['经济排名前五的地区'].fillna('').astype(str).tolist()
# 读取表格二的数据
df2 = pd.read_excel(file2)
region_column = df2['县'].fillna('').astype(str).tolist()
第二节:添加进度条并将匹配到的表格二元素放在表格一的县列中
这部分代码使用tqdm库创建了一个进度条,总共的迭代次数为address_column的长度,即表格一中经济排名前五的地区的行数。然后,通过遍历address_column,使用列表推导式从region_column中提取与地址匹配的县。最后,将匹配的县用逗号连接成字符串,并将结果存储在表格一的县列中。
# 添加进度条
progress_bar = tqdm(total=len(address_column), desc='Processing')
# 将表格二的元素放在表格一的县列中
for i, address in enumerate(address_column):
counties = [region for region in region_column if region in address]
df1.at[i, '县'] = ','.join(counties)
progress_bar.update(1)
# 关闭进度条
progress_bar.close()
第三节:保存结果到新的Excel文件
代码指定了输出文件的路径,并使用to_excel方法将修改后的表格一数据保存到新的Excel文件中。通过设置index=False,可以避免在输出文件中添加默认的行索引。
# 保存结果到新的Excel文件
output_file = r"C:\Users\aa\Desktop\3.xlsx"
df1.to_excel(output_file, index=False)
第四节:代码运行实例
注意:列名称记得按实际修改
输入表格一:
输入表格二:
输出表格三:
完整程序:
import pandas as pd
from tqdm import tqdm
# 读取表格一和表格二
file1 = r"C:\Users\aa\Desktop\1.xlsx"
file2 = r"C:\Users\aa\Desktop\2.xlsx"
# 读取表格一的数据
df1 = pd.read_excel(file1)
address_column = df1['经济排名前五的地区'].fillna('').astype(str).tolist()
# 读取表格二的数据
df2 = pd.read_excel(file2)
region_column = df2['县'].fillna('').astype(str).tolist()
# 添加进度条
progress_bar = tqdm(total=len(address_column), desc='Processing')
# 将表格二的元素放在表格一的县列中
for i, address in enumerate(address_column):
counties = [region for region in region_column if region in address]
df1.at[i, '县'] = ','.join(counties)
progress_bar.update(1)
# 关闭进度条
progress_bar.close()
# 保存结果到新的Excel文件
output_file = r"C:\Users\aa\Desktop\3.xlsx"
df1.to_excel(output_file, index=False)
如有不足,欢迎留言指正交流哈!!!