Панды не будут пропускать пустую строку с функцией index_col

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

Мне нужно проиндексировать мой фрейм данных, используя столбец страны. Но есть пустая строка после строки столбца, которая выглядит как CSV-файл:

0 Televison, Physicians, and Life Expectancy
1 NaN, NaN, NaN, NaN, NaN, NaN
2 country, life expectancy, people/TV, people/physician, female life expectancy, male life expectancy
3 NaN, NaN, NaN, NaN, NaN, NaN (I need to skip this line)
4 value, value, value, value, value, value, 
5 value, value, value, value, value, value, 
...
...

Я попытался пропустить пустую строку между заголовком и первой реальной строкой данных следующим образом:

tvdf = pd.read_csv(infile, sep=',', header=2, skiprows=[3], nrows=40, index_col='Country', skip_blank_lines=True)

в качестве возврата он успешно поместил столбец страны в качестве индекса. однако, ни skiprows, ни skip_blank_lines не работают внутри функции index_col. Моя интерпретация такова: если я использую столбец страны в качестве индекса, он распознает пустую строку (NaN) в качестве первого имени индекса. И ни skiprows, ни skip_blank_lines не будут действовать в функции index_col. Я попробовал это без index_col, он будет автоматически пропускать строки без значения без каких-либо пропусков или операторов skip_blank_lines.

Я искал в Интернете с этой проблемой, и не нашел никаких связанных проблем. Так что на этом этапе, возможно, я могу либо манипулировать файлом cvs и вручную удалить пустую строку, либо у кого-нибудь есть опыт, связанный с этим??

Я ценю вашу помощь!

3 ответа

Использование skiprows=[0, 1, 3]

pd.read_clipboard(
    sep=',', skipinitialspace=True, skiprows=[0, 1, 3]
)

skip_blank_lines=True исправляет это.

(нет необходимости вручную передавать номера строк пустых строк)

Создайте новый фрейм данных - cric_scores

      test_scores = pd.DataFrame({'id' : [1, 2, '', 4, 5], 
'first_name' : ['Sachin', 'Dravid', '', 'Virat', 'Yuvraj'],
'scores' : [150, 210, '', 125, 75],
'state' : ['Mumbai', 'Karnataka','', 'Delhi', 'Punjab']})


skip = pd.read_csv(filepath_or_buffer = 'test_scores.csv', sep = ',', header = 
0)

skip

ВЫВОД: - id first_name оценивает состояние 0 1,0 Сачин 150,0 Мумбаи 1 2,0 Дравид 210,0 Карнатака 2 NaN NaN NaN NaN 3 4,0 Вират 125,0 Дели 4 5,0 Юврадж 75,0 Пенджаб

ПРОБЛЕМА: skip_blank_lines не работает.

Другие вопросы по тегам