Python как использовать инструкцию if для заголовка динамического столбца

#python #if-statement

Вопрос:

У меня есть много csv-файлов для чтения с помощью python, и я использую сводную таблицу, но один из столбцов может содержать разное содержимое для каждого csv-файла. После того, как я использую фиксированную инструкцию If для выполнения функции, произойдет ошибка.

Например, вот мой код:

 import pandas as pd
import numpy as np

dic = {
"Category": ['Math', 'Math', 'Math', 'Math', 'Math', 'Math', 'History', 'History','History','History','History','History','Physics','Physics','Physics','Physics','Physics','Physics'], 
"Name": ['John', 'Mary', 'Scott','Kevin','Judy','Lee','John', 'Mary', 'Scott','Kevin','Judy','Lee','John', 'Mary', 'Scott','Kevin','Judy','Lee'],
"Scores": [59,64,50,33,80,20,30,44,65,66,78,80,94,56,55,61,12,11]}

df = pd.DataFrame(dic)

df2=df.pivot_table(index= ['Name'], columns="Category", values=['Scores'])
 
df2.columns=df2.columns.droplevel(0)

if ((df2['History'] > 60) | (df2['Math'] > 70) | (df2['Physics'] > 50)).any():
     print (df2.loc[:, 'History'])
 

Приведенный выше код оператора If работает, когда столбец категории в моем файле csv содержит математику, историю и физику.

Однако, если столбец категории в другом файле csv содержит только математику, историю. Оператор If не будет работать. Как я могу решить оператор If, чтобы он соответствовал другому сценарию динамического содержимого столбца?

Например, ниже этот код не будет работать, потому что в заголовке столбца нет физики.

 import pandas as pd
import numpy as np

dic = {
"Category": ['Math', 'Math', 'Math', 'Math', 'Math', 'Math','Physics','Physics','Physics','Physics','Physics','Physics'], 
"Name": ['John', 'Mary', 'Scott','Kevin','Judy','Lee','John', 'Mary', 'Scott','Kevin','Judy','Lee','John', 'Mary', 'Scott','Kevin','Judy','Lee'],
"Scores": [59,64,50,33,80,20,30,44,65,66,78,80]}

df = pd.DataFrame(dic)

df2=df.pivot_table(index= ['Name'], columns="Category", values=['Scores'])
 
df2.columns=df2.columns.droplevel(0)

if ((df2['History'] > 60) | (df2['Math'] > 70) | (df2['Physics'] > 50)).any():
     print (df2.loc[:, 'History'])