如何为 Python 中的 sheet 相关属性向我的数据框添加一列?

How do I add a column to my dataframe for sheet related attributes in Python?

我当前的脚本能够遍历目录并在 sheet 秒到 pandas 内进行多级更改。我想在我的数据框中添加基于 sheet

的列

在我的最终数据框中有 2 个 sheet 具有相同的列,但一个 sheet 被命名为 'Voting Members',另一个被命名为 'Removed Members'。我需要在名为 'Status' 的数据框中添加一个列,其中对于 Status 列下的投票成员 sheet 所有行都表示 'Active' 并且对于 'Removed Members' sheet 所有行说“已取消” 示例-

original dataframe for sheetname 'Voting Members'

Zip FirstName   LastName  
60618   Amur    Shonan    
62960   Karla   Cunnungham 

期望的输出

Zip FirstName   LastName  Status
60618   Amur    Shonan    Active
62960   Karla   Cunnungham Active

所以基本上,如果有 20 行,则状态列应该有 20 个“活动”; for sheetname '投票成员; sheet 'Removed members'.

的 20 行 'cancelled'

到目前为止我的代码 -

import pandas as pd
import os
column_name_update_map = {'LocationName': 'Company Name','StreetAddress':'Address','City':'City','State':'State'}  
cols_to_drop =  ['TypeDescription','LastName','FirstName','StreetAddress2']     

for file in os.listdir("C:/Users/hh/Desktop/oo/python/Partner Matching"):
    if file.startswith("TVC"):
        dfs = pd.read_excel(file, sheet_name=None)
        output = dict()
        for ws, df in dfs.items():
            if ws in ["Opt-Ins", "New Voting Members", "Temporary Members"]:
                continue
            #drop unneeded columns
            temp = df.drop(cols_to_drop, errors="ignore", axis=1)
            #rename columns
            temp = temp.rename(columns=column_name_update_map)
            #drop empty columns
            temp = temp.dropna(how="all", axis=1)
            output[ws] = temp
        writer = pd.ExcelWriter(f'{file.replace(".xlsx","")} (updated headers).xlsx')
        for ws, df in output.items():
            df.to_excel(writer, index=None, sheet_name=ws)
        writer.save()
        writer.close()

我如何在我的代码中实现它,以便在文件中获取 sheet 的状态列?

在你的内部循环中,尝试这样的事情:

            if ws in ["Voting Members", "Removed Members"]:
                temp = df
                temp['Status'] = "Active" if ws == "Voting Members" else "Cancelled"
                temp = temp[["Zip", "FirstName", "LastName", "Status"]]
                output[ws] = temp

要在上面的每个工作表中添加另一个名为 Partner 且所有行的值为 TVC 的列,您可以添加以下行:

                temp['Partner'] = "TVC"

您可以将其放在 temp = df 行之后或 output[ws] = temp 行之前。