如何将报表式Excel数据读入pandas数据框

问题描述 投票:0回答:1

我已经下载了数据(从 https://www.nalpdirectory.com/),如该 Excel 屏幕截图所示。

如何将其重新格式化为 pandas 数据框?试图找出如何尽可能多地使用 python 而不是 Excel 来完成。我正在研究

pd.stack()
pd.unstack()
,但我认为我首先错过了几个步骤。谢谢!

python-3.x pandas pivot-table
1个回答
0
投票

我会选择一个带有 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

注意:我无法从您共享的链接下载电子表格,但您可以找到我制作的电子表格并在此处在线尝试我的代码。

© www.soinside.com 2019 - 2024. All rights reserved.