使用Pandas或其他模块在Python中读取没有隐藏列的Excel文件

tai*_*ren 5 python excel pandas

任何人都可以告诉我如何在Python中使用Pandas或任何其他模块读取没有隐藏列的Excel文件?

当我尝试使用Pandas读取excel文件时,例如:

file_np = pd.read_excel(f_name)
Run Code Online (Sandbox Code Playgroud)

dataframe file_np始终包含所有列.从这个数据框中,我不知道如何识别哪个列隐藏在Excel文件中.谢谢!

Viv*_*gan 5

我不认为pandas它是开箱即用的。

输入

在此处输入图片说明

不幸的是,您将不得不进行一些冗余阅读(两次)。openpyxl做你想做的 -

import openpyxl
import pandas as pd

loc = 'sample.xlsx'
wb = openpyxl.load_workbook(loc)
ws = wb.get_sheet_by_name('Sheet1')

hidden_cols = []
for colLetter,colDimension in ws.column_dimensions.items():
    if colDimension.hidden == True:
        hidden_cols.append(colLetter)

df = pd.read_excel(loc)
unhidden = list( set(df.columns) - set(hidden_cols) )
df = df[unhidden]
print(df)
Run Code Online (Sandbox Code Playgroud)

输出

    C   A
0   1   7
1   9   7
2   5  10
3   7   7
4   4   8
5   4   6
6   9   9
7  10   3
8   1   2
Run Code Online (Sandbox Code Playgroud)

解释

首先使用openpyxl-读取文件

loc = 'C:/Users/FGB3140/Desktop/sample.xlsx'
wb = openpyxl.load_workbook(loc)
ws = wb.get_sheet_by_name('Sheet1')
Run Code Online (Sandbox Code Playgroud)

在单元格中搜索隐藏属性(这是隐藏列被捕获的地方)

hidden_cols = []
for colLetter,colDimension in ws.column_dimensions.items():
    if colDimension.hidden == True:
        hidden_cols.append(colLetter)
Run Code Online (Sandbox Code Playgroud)

使用熊猫读取相同的文件 - df = pd.read_excel(loc)

通过从其余列中减去隐藏的列来找到未隐藏的列 -

unhidden = list( set(df.columns) - set(hidden_cols) )
Run Code Online (Sandbox Code Playgroud)

最后,过滤掉未隐藏的列 -

df = df[unhidden]
Run Code Online (Sandbox Code Playgroud)

聚苯乙烯

我知道我可以做colDimension.hidden == False或简单if not colDimension.hidden- 这里的目标是捕获隐藏的列,然后相应地进行过滤。希望这可以帮助!