Pandas.read_csv не читает полный заголовок - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть CSV-файл, в котором сохраняются позиции и скорости частиц, например:

x, y, z, vx, vy, vz
-0.960, 0.870, -0.490, 962.17, -566.10, 713.40
1.450, 0.777, 2.270, -786.27, 63.31, -441.00
-3.350, -1.640, 1.313, 879.20, 637.76, -556.24
-0.504, 2.970, -0.278, 613.22, -717.32, 557.02
0.338, 0.220, 0.090, -927.18, -778.77, -443.05
...

Я пытаюсь прочитать этот файл и сохранить его как фрейм данных Pandas в сценарии с read_csv.Но я получаю ошибки при вызове любого столбца, кроме первого

AttributeError: у объекта «DataFrame» нет атрибута «y»

Я бы никогда не получил ошибку длястолбец 'x', поэтому я написал фрагмент, чтобы узнать, смогу ли я выяснить, откуда возникла ошибка чтения.

import pandas as pd
data = pd.read_csv('snap.csv')
print data
print data.x
print data.y

Консоль правильно выводит значение

          x      y      z       vx       vy       vz       
0    -0.960  0.870 -0.490   962.17  -566.10   713.40   
1     1.450  0.777  2.270  -786.27    63.31  -441.00   
2    -3.350 -1.640  1.313   879.20   637.76  -556.24  
3    -0.504  2.970 -0.278   613.22  -717.32   557.02  
4     0.338  0.220  0.090  -927.18  -778.77  -443.05 
...

это присваивает столбцам правильные имена.Затем

0      -0.960
1       1.450
2      -3.350
3      -0.504
4       0.338  
...

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

AttributeError: у объекта «DataFrame» нет атрибута «y»

Затем я прошел по данным.itertuples () для печати первой строки по отдельности, чтобы увидеть, как это выглядит, и это подтвердило, что имена присваиваются только первому столбцу, а другие нет.

Pandas(Index=0, x=-0.96, _2=0.87, _3=-0.49, _4=962.17, _5=-566.1, _6=713.4)

Других проблем с данными нет.Все значения соответствуют правильному индексу.Просто имена назначаются неправильно, и только первый столбец может быть назван по имени.Я попытался поместить одинарные кавычки вокруг каждого имени столбца, и это показывает те же самые ошибки.Я знаю, что есть способы обойти это, например, присвоить имена в функции read_csv, но мне любопытно, в чем проблема на самом деле, чтобы избежать повторения этого.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018
df = pd.read_csv("snap.csv",names =["x", "y", "z", "vx", "vy", "vz"])
0 голосов
/ 20 сентября 2018

Попробуйте объявить имена столбцов при создании фрейма данных.

df = pd.DataFrame(pd.read_csv(“file.csv”), columns=[“x”, “y”, “z”, “vx”, “vy”, “vz”])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...