Фрейм данных Pandas неправильно считывает значение одного столбца

#python #pandas

#python #pandas

Вопрос:

Файл CSV: Ссылка на Github

Это мой код:

 import pandas as pd

df = pd.read_csv("log_1_2018_09_07.csv", encoding="ISO-8859-1", delimiter=';')
print(df.columns.tolist())
dates = []
times = []
outputs = []

for date in df.loc[:, "Datum"]:
    dates.append(date)
    print("date")
    print(date)
for time in df.loc[:, " Zeit"]:
    times.append(time)
    print("time")
    print(time)
for out in df.iloc[:, 19]:
    print("output")
    outputs.append(out)
    print(out)
  

Он правильно считывает даты и время, но все 19-й столбец (столбец T) равен 0, а 6-е значение равно 990, однако pandas считывает его как 0, а 9-е значение как 1.
Кто-нибудь знает, почему он считывает неправильные значения?
Спасибо!!

Комментарии:

1. Привет, данные на github повреждены. Можете ли вы указать нам действительное значение?

2. Pandas прав. Я проверил ваши данные, и действительно, 6-е значение в столбце 19 равно 0, а 9-е значение в столбце 19 равно 1. (При подсчете столбцов вы должны начинать с 0.)

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

Ответ №1:

 import pandas as pd
url = 'https://raw.github.com/liamrisch/helper/master/log_1_2018_09_07.csv'
df = pd.read_csv(url, encoding="ISO-8859-1", delimiter=';')

df.iloc[:,[6,19]]
  

Выдает:

 Teil 1-8 - Abstand Rasthaken MP1-MP2    Teil 1-8
0   26,764  0
1   26,787  0
2   26,792  0
3   26,788  0
4   26,771  0
5   999,990 0
6   26,786  0
7   26,785  0
8   26,780  1
9   26,783  0
10  26,798  0
  

Ответ №2:

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

печать df в этом столбце (перед любой манипуляцией) показывает фактические значения этого столбца без каких-либо сюрпризов.