#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'])