При чтении файлов Excel с pandas, что определяет тип данных считываемых ячеек? - PullRequest
1 голос
/ 17 июня 2020

Я читаю лист Excel и извлекаю данные из строк, содержащих данный заказ на поставку.

import pandas as pd

xlsx = pd.ExcelFile('Book2.xlsx')
df = pd.read_excel(xlsx)
PO_arr = ['121121','212121']

for i in PO_arr:
    PO = i
    PO_DATA = df.loc[df['PONUM'] == PO]

    for i in range(1, max(PO_DATA['POLINENUM'].values) +1):

Когда я беру этот лист Excel прямо из его источника, мой код работает нормально. Но когда я вырезаю только те строки, которые мне нужны, и вставляю их в новую таблицу с точно таким же форматированием и читаю эту новую таблицу, мне приходится изменять PO_DATA, чтобы искать целое число вместо строки как таковой:

PO_DATA = df.loc[df['PONUM'] == int(PO)]

Если нет, я получаю сообщение об ошибке, и вызов PO_DATA возвращает пустой фрейм данных.

C:\...\pandas\core\ops\array_ops.py:253: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
res_values = method(rvalues)

Я проверил форматирование ячеек в Excel, и в обоих случаях они отформатированы как «Общие» ячейки.

Что делает так, что когда я разрезаю свою электронную таблицу, мне приходится искать целое число, а не строку? Что мне нужно сделать, чтобы он работал для листов, которые я создал и вставил в соответствующие данные, а не только для листов из источника?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Обновление: я нашел старую связанную ветку, которая не обязательно ответила на вопрос, но решила проблему.

вы можете заставить pandas импортировать значения как определенный тип данных при чтении из Excel с использованием конвертеров аргумент для read_excel.

df = pd.read_excel(xlsx, converters={'POLINENUM':int,'PONUM':int})
0 голосов
/ 17 июня 2020

При использовании копирования и вставки Excel может выполнять некое странное форматирование: ctl- c: ctl-v. Я уверен, что вы пробовали это, но ...

A) Попробуйте скопировать ctl- c затем ctl-alt-v: "v": введите ... на новом листе / файле

B) Попробуйте использовать средство рисования формата в Excel: выглядит как paintbru sh на вкладке "Главная" - сначала выберите правильно отформатированные ячейки - дважды щелкните средство рисования формата - перейдите к новому файлу / листу - выберите ячейки, для которых требуется формат соответствовать.

C) Выберите новый файл / таблицу, в которую вы вставили - выберите фиолетовый значок ластика из верхних опций в Excel - очистите все форматы

...