如何为 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
行之前。
我当前的脚本能够遍历目录并在 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
行之前。