我已经下载了数据(从 https://www.nalpdirectory.com/),如该 Excel 屏幕截图所示。
如何将其重新格式化为 pandas 数据框?试图找出如何尽可能多地使用 python 而不是 Excel 来完成。我正在研究
pd.stack()
和 pd.unstack()
,但我认为我首先错过了几个步骤。谢谢!
我会选择一个带有 hierarchical 索引
(2)
和列 (3)
的 DataFrame :
LB = 14 # Length of blocks
NH = 3 # Number of headers
raw = pd.read_excel("file.xlsx", header=None, na_values=["UNK", "NC"])
mux_cols = (pd.MultiIndex.from_frame(
raw.iloc[:NH+1, 1:].ffill(axis=1).dropna().T).rename([None]*NH))
idx_blocks = (raw.index % LB)
df = (
raw.iloc[idx_blocks>NH]
.join(raw[0].where(idx_blocks < NH-1)
.ffill().rename("Cateogry"))
.rename(columns={0: "Sub_Cateogry"})
.set_index(["Cateogry", "Sub_Cateogry"])
.set_axis(mux_cols, axis=1)
#.fillna(0) # optional
.convert_dtypes()
)
输出(在 Jupyter):
loc
:
cat = "Cleary Gottlieb Steen & Hamilton LLP, NEW YORK, New York"
sub_cat = "2 or More Races"
agg, year, gender = "Total Attorneys", 2023, "Men"
df.loc[(cat, sub_cat), (agg, year, gender)] # 7
注意:我无法从您共享的链接下载电子表格,但您可以找到我制作的电子表格并在此处在线尝试我的代码。