Панды читают данные из столбца как float или int, а не как str, несмотря на настройку dtype - PullRequest
0 голосов
/ 26 ноября 2018

У меня проблема с пандами (0.23.4) на python 3.7, где данные читаются как научная запись, а не просто как строка, несмотря на установку параметра dtype.Вот пример данных, которые читаются в

-------------------
codes
-------------------
001234544
00023455
123456789
A1253532
780E9000
00678E10

Проблема возникает со строками 5 и 6 выше, потому что они содержат, я думаю, символы «E», и они превращаются в научныенотации.

Мой ридер настроен следующим образом.

accounts = pd.read_excel('gym_accounts.xlsx', sheet_name='Sheet1', dtype=str)

, несмотря на то, что параметр dtype = str, похоже, что панды используют что-то, называемое ... "сниффер", который автоматически определяет тип данных иего возвращают обратно к тому, что я предполагаю, является float или int, а затем меняем его на научную запись.В одном предложении в другом потоке говорится, что в read_csv нужно использовать что-то, называемое оператором преобразователя, например:

pd.read_csv('my.csv', converters = {i: str for i in range(0, 100)})

Мне любопытно, если это возможное решение моей проблемы, но я также не знаю, как долго это будет продолжаться.Диапазон должен быть таким, как он часто меняется.Есть ли способ запросить длину столбца и передать его как переменную в этот вызов диапазона?

Похоже, я могу сделать что-то вроде len (accounts.index) ... но я не могу этого делать до тех пор, пока читатель не прочтет файл, поэтому что-то подобное ниже не работает

accounts = pd.read_excel('gym_accounts.xlsx', sheet_name='Sheet1',  converters = {i: str for i in range(0, gym_length)}))
gym_length = len(accounts.index)

проверка длины идет после ... я думаю, вы называете это ... считыватель данных, поэтому он не работает, очевидно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...