У меня проблема с пандами (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)
проверка длины идет после ... я думаю, вы называете это ... считыватель данных, поэтому он не работает, очевидно.