Pandas добавляет лишнюю запятую в последнем столбце данных - PullRequest
0 голосов
/ 22 апреля 2020

Как мне удалить лишнюю запятую, которую pandas добавляет к последнему столбцу моего набора данных, пожалуйста?

Вот пример того, как данные выглядят в файле CSV: Пример данных в файле CSV

Вот синтаксис, который я использую для его импорта:

import pandas as pd
df = pd.read_csv (r'*path*', sep='|')
print (df)

И вот как это выглядит в Spyder: Пример вывода в Консоль Spyder


Добавление лямбда-функций следующим образом привело к ошибке в консоли Spyder:

import pandas as pd
df = pd.read_csv (r'C:\Users\mohamed.a.eshra\Downloads\us_cities_states_counties.csv', sep='|')
df["City alias,"] = df["City alias,"].apply(lambda x: x if x[-1]!="," else x[:-1])
df = df.rename(columns={"City alias,": "City alias"})
print (df)

Ошибка после добавления предыдущих функций:

Traceback (последний вызов был последним): Файл "C: \ Users \ mohamed.a.eshra.spyder-py3 \ Scripts \ Открытие CSV-файла с использованием Pandas .py", строка 9, в df ["City" псевдоним, "] = df [" Псевдоним города "]. apply (лямбда x: x, если x [-1]! =", "else x [: - 1]) Файл" C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ series.py ", строка 3848, в apply mapped = lib.map_infer (values, f, convert = convert_dtype) Файл" pandas_libs \ lib.pyx ", строка 2329, в pandas ._libs.lib.map_infe r
Файл "C: \ Users \ mohamed.a.eshra.spyder-py3 \ Scripts \ Открытие CSV-файла с использованием Pandas .py", строка 9, в df ["Псевдоним города"] = df ["Псевдоним города"]. apply (лямбда x: x, если x [-1]! = "," else x [: - 1]) TypeError: объект с плавающей точкой не является допустимым

Буду признателен за помощь в решении проблемы.

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Таким образом, я удалил несколько предыдущих столбцов в файле CSV с помощью Excel, и фрейм данных, кажется, загружается правильно.

Печать кадра данных в Spyder

Кажется, что было пустой столбец в базовом CSV. Тем не менее, не уверен, как набор данных загружался в первую очередь, как упомянуто "A Co".

Спасибо.

1 голос
/ 22 апреля 2020

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

Отредактировано для обработки пропущенных значений:

import numpy as np
import pandas as pd

def clean_city_name(x):
   if pd.isnull(x):
        return np.NaN
   else:
       if x[-1]==',':
           return x[:-1]
   return x

df["City alias,"] = df["City alias,"].apply(clean_city_name)

df = df.rename(columns={"City alias,": "City alias"})

Таким образом, вы будете избавьтесь от запятых.

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

Обычно запятая является разделителем по умолчанию в файлах CSV, поэтому эта запятая в конце может быть признаком того, что пустой конец столбца присутствовал в исходном CSV до того, как разделитель был заменен на «|» ( если это произошло в какой-то момент, я не знаю, как был создан ваш набор данных, чтобы он оставался гипотетическим! ).

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