Неправильно назначены столбцы в Pandas (Python) - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть набор данных в файле .csv, который я пытаюсь извлечь и назвать его столбцы. Я использую следующий код:

data_name = 'housing.csv'
column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX',
                                 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
                                 'LSTAT', 'MEDV']
data = pd.read_csv(data_name, names=column_names, error_bad_lines=False,
                   header=None)

Проблема в том, что он присваивает заголовки неправильным столбцам. Только последний столбец переименовывается, а другие добавляются, заполняются значениями NaN. Я также пытался использовать rename с похожими результатами. Вот как выглядит print(data.head()):

                                                CRIM  ZN  ...  LSTAT  MEDV
0   0.00632  18.00   2.310  0  0.5380  6.5750  65... NaN  ...    NaN   NaN
1   0.02731   0.00   7.070  0  0.4690  6.4210  78... NaN  ...    NaN   NaN
2   0.02729   0.00   7.070  0  0.4690  7.1850  61... NaN  ...    NaN   NaN
3   0.03237   0.00   2.180  0  0.4580  6.9980  45... NaN  ...    NaN   NaN
4   0.06905   0.00   2.180  0  0.4580  7.1470  54... NaN  ...    NaN   NaN

Есть идеи, как это решить?

1 Ответ

0 голосов
/ 24 февраля 2020

Похоже, ваши текстовые данные разделены пробелами, а не запятыми.

Вы можете попытаться явно указать read_csv использовать один или несколько пробелов в качестве разделителя полей:

data = pd.read_csv(data_name, names=column_names, error_bad_lines=False,
                   header=None, sep='\s+')

В read_csv также есть явная опция delim_whitespace, которая выполняет так же, как и выше. Из документов :

delim_whitespace: bool, значение по умолчанию False

Указывает, использовать пробел или нет (например, ' ' или ' ') будет использоваться как сент. Эквивалентно настройке sep='\s+'. Если для этого параметра установлено значение True, для параметра delimiter ничего не передается.

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