Python проверяет типы данных Excel с использованием Pandas Numpy - PullRequest
1 голос
/ 08 апреля 2019

Я использую Pandas для чтения файла Excel и проверки столбцов для Integer, Date и проверки значения столбца, присутствующего в Списке.

xl = pd.ExcelFile(os.path.join(os.getcwd() , "Inputfile.xlsx"))
df = xl.parse("Sheet1")
listvalues = ['list1','list2','list3']
df[errorcolumn] = df[errorcolumn] + np.where(df[listcolumn].isin(listvalues), "", "list value not valid")
df[errorcolumn] = df[errorcolumn] + np.where(df[intcolumn].dtype.kind in 'i', " int value not valid, ")
writer = pd.ExcelWriter(os.path.join(os.getcwd(), "Inputfile.xlsx"), engine='xlsxwriter')
self.df.to_excel(writer, sheet_name='Sheet1', header=True, index=False)
writer.save()
writer.close()
print("Please fix the fields mentioned in the Error column of input file to proceed")
sys.exit(1)

Ввод excel:


ID  listcolumn  intcolumn   errorcolumn

1   list1       5           ""
2   list22      5.6         ""
3   list3       6.25        ""

Использование приведенного ниже кода для проверки только значений из списка присутствует в столбце и добавляет сообщение об ошибке для строк, которые имеют недопустимые значения,

df[errorcolumn] = df[errorcolumn] + np.where(df[listcolumn].isin(listvalues), "", "list value not valid")

Для проверки только целых чиселЯ использовал приведенный ниже код, который добавляет сообщение об ошибке в строки при обнаружении одной недопустимой строки:

df[errorcolumn] = df[errorcolumn] + np.where(df[intcolumn].dtype.kind in 'i', " int value not valid, ")

Текущий вывод Excel:


ID  listcolumn  intcolumn   errorcolumn

1   list1       5           "int value not valid, "
2   list22      5.6         "list value not valid, int value not valid,"
3   list3       6.25        "int value not valid,"

Ожидаемый выход Excel:


ID  listcolumn  intcolumn   errorcolumn

1   list1       5           ""
2   list22      5.6         "list value not valid, int value not valid,"
3   list3       6.25        "int value not valid,"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...