使用python在excel中查找缺少的列标题

使用python在excel中查找缺少的列标题,python,pandas,Python,Pandas,我想使用python查找excel中是否存在所有必需的列名。 例如: Header1 Header2 Header3 Val1 Val4 Val6 Val2 val5 Val7 我想知道是否有标题4 我使用以下方法: import pandas as pd path=C:\Req_file\excel_file xl = pd.Excelfile(path) for name in xl.sheet_names: df = pd.read_excel(xl,

我想使用python查找excel中是否存在所有必需的列名。 例如:

Header1 Header2 Header3
Val1    Val4    Val6
Val2    val5    Val7
我想知道是否有
标题4

我使用以下方法:

import pandas as pd
path=C:\Req_file\excel_file

xl = pd.Excelfile(path)

for name in xl.sheet_names:
    df = pd.read_excel(xl, name)
my_cols = [Header1, Header2,Header3,Header4]
print(df[my_cols])
它会产生一个

Keyerror:[header4]不在索引中

我想知道是否可以使用“如果”语句。 我想在帧上生成一条错误消息,但我只在终端中得到

非常感谢。

如果要检查是否存在所有必需的列标题,可以使用集合,并使用数据帧的
列属性:

if set(required_columns) <= set(df.columns):
    print("all required columns are there")
并将两者结合如下:

missing = set(required_columns) - set(df.columns)
if missing:
    print("Missing required columns:", missing)
如果要检查是否存在所有必需的列标题,可以使用集合,并使用数据帧的
columns
属性:

if set(required_columns) <= set(df.columns):
    print("all required columns are there")
并将两者结合如下:

missing = set(required_columns) - set(df.columns)
if missing:
    print("Missing required columns:", missing)
链接此:

In [5]: data=pd.DataFrame([["Abao","man"],["Tom","man"]],columns=["name","sex"])

In [6]: data
Out[6]: 
   name  sex
0  Abao  man
1   Tom  man

In [7]: data.columns 
Out[7]: Index(['name', 'sex'], dtype='object')

In [8]: "age" in data.columns
Out[8]: False

In [9]: "sex" in data.columns
Out[9]: True    
链接此:

In [5]: data=pd.DataFrame([["Abao","man"],["Tom","man"]],columns=["name","sex"])

In [6]: data
Out[6]: 
   name  sex
0  Abao  man
1   Tom  man

In [7]: data.columns 
Out[7]: Index(['name', 'sex'], dtype='object')

In [8]: "age" in data.columns
Out[8]: False

In [9]: "sex" in data.columns
Out[9]: True    

df.columns
将列出列标题的名称:您可以测试您感兴趣的列是否存在:
如果df.columns:
中有“我的列”。如果您试图在缺少标题时生成错误消息,则使用
尝试:
而不是
如果:
@Dan:绝对正确,但需要注意的是,如果您必须对十几个必需的列执行此操作,并且中间有可选的中间代码,那么现在没有一个点可以检查是否存在。除非您执行无操作尝试,除了:
try:df[必需的_列];除了KeyError:
。可能更好的方法是让KeyError冒泡到用户面前。
try:df[required_columns];除了KeyError:
在我看来是正确的。我喜欢您发布的set解决方案,但在本例中,您的
try:
代码对我更有意义。我认为您应该将其添加到您的答案中。
df.columns
将列出列标题的名称:您可以测试您感兴趣的列是否存在:
如果df.columns中的“my_column:
。如果您试图在缺少标题时生成错误消息,使用
try:
而不是
if:
更像是一种python@Dan:绝对正确,但需要注意的是,如果您必须对十几个必需的列执行此操作,并且中间有可选的中间代码,那么现在没有一个点可以检查是否存在。除非您执行无操作尝试,除了:
try:df[必需的_列];除了KeyError:
。可能更好的方法是让KeyError冒泡到用户面前。
try:df[required_columns];除了KeyError:
在我看来是正确的。我喜欢您发布的set解决方案,但在本例中,您的
try:
代码对我更有意义。我想你也许应该把它添加到你的答案中。有没有办法我可以从df.columns中不存在的my_列打印缺少的列标题?可能
print(set(my_columns)-set(df.columns))
就可以了。谢谢大家。我得到了我需要的东西。有什么方法可以从df.columns中不存在的my_列打印缺少的列标题吗?可能
print(set(my_columns)-set(df.columns))
就可以了。谢谢大家。我有我需要的东西。