首页 > 解决方案 > 使用 pandas 组合工作表,遍历特定列,将行添加到新列表

问题描述

我有一个包含多个工作表的 Excel 工作簿,这些工作表都具有相同的列标题。我想遍历每个工作表中的一列并将行添加到新列表(或列)中。

背景:每个工作表代表一个不同的农民社区,每个工作表的每一列都是一个人口统计数据。我已经为每个农民分配了一个代码,我想将所有这些代码放在一个列表中。我知道我可以在 excel 中手动完成,但我正在尝试使用 pandas、python

pruning.xlsx 文件中的一个工作表示例如下所示: 在此处输入图像描述


import pandas as pd
import numpy as np


sheets_pt = pd.read_excel(r"C:\Users\RRF\Desktop\pruning.xlsx",sheetname=None)
sheets_pt_read = pd.ExcelFile(r"C:\Users\RRF\Desktop\pruning.xlsx")

sheetnames_read = sheets_pt_read.sheet_names

codelist = []
for village in sheetnames_read:
    for code in sheets_pt[village]["Farmer Code"]:
        codelist.append(code)

运行代码后。我打印了代码表和前 5 张纸中的农民代码。然后出现以下错误消息...

这是我收到的错误消息:

KeyError Traceback (最近一次调用最后) ~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance . . . KeyError: 'Farmer Code'

如果有人感兴趣,将非常乐意分享整个错误消息。

标签: pythonexcelpandasjupyter-notebook

解决方案


import pandas as pd
import numpy as np

# read excel file into notebook assign to pro2019
pro2019 = pd.read_excel(path_to_file, sheet_name=None)

# concatenate all of the worksheets within the file removing the index 
# from individual sheets
df = pd.concat(pro2019, ignore_index=True)

# create empty list to store farmer codes
pro_codelist = []

# iterate through the df column titled "FARMER CODE"
# append each code to pro_codelist
for code in df["FARMER CODE"]:
    pro_codelist.append(code)

推荐阅读