Python Pandas Dataframe查找值列表的列索引号

iyfjxgzm  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(128)

我正在清理已加载到dataframe的非结构化数据(从.xlsx文件加载),它们没有列标签,而是有列索引。通过从每个列阅读值,我需要到达行,这些值将用于设置列标签。
打印(df)

0   1   2    3   4    5  
o NaN NaN NaN  NaN NaN  NaN
1 NaN NaN %    NaN NaN  NaN
2 Usr Id  Add  ph  dept Sec 
3 Tom 12  Addr 123 IT   F.E

我的解决方案是下面确定行的索引

for col in df.columns :
   header_idx = df[df[col].eq('Usr')].index.values[0]

一旦确定了索引,我将再次从header_idx读取并加载excel源文件到dataframe。这个解决方案工作得很好,但我还有一个用例,我需要检查字符串列表来识别索引。例如,对于第一列,我需要检查[“Usr”,“User”,“Usrnm”]等。有人能提供方向吗?

dgenwo3n

dgenwo3n1#

更通用的解决方案可能是:

with pd.ExcelFile('data.xlsx') as xlsx:
    df = pd.read_excel(xlsx, header=None)
    skip = df.dropna().index[0]
    df = pd.read_excel(xlsx, skiprows=skip)

如果您认为标题没有空值,并且在它之前,每行至少有一个空单元格,您可以使用dropna删除这些行。您还可以使用thresh参数以提高安全性。
输出:

>>> df
   Usr  Id   Add   ph dept  Sec
0  Tom  12  Addr  123   IT  F.E

相关问题