#python-3.x #pandas #dataframe
#python-3.x #pandas #фрейм данных
Вопрос:
Я читаю файл и конвертирую в фрейм данных. Поскольку файл не организован, я сохранил заголовок как 0 при чтении в формате csv. По умолчанию, если заголовок = 0, pandas автоматически назначает первую строку df
"Name"=>"Mark" "Phone"=>"1234567" "Id"=>"E1234" "Admin"=>false
0 "Name"=>"Anto" "Phone"=>"7654321" "Dept"=>"HR" "Id"=>"E4321" "case"=>nil
Моя конечная цель — преобразовать фрейм данных в читаемый формат как
Name Phone Id Dept Admin case
Mark 1234567 E1234 false
Anto 7654321 E4321 HR nil
Поскольку первая строка уже перемещена в столбец, я не могу выполнить манипуляции с первой строкой. Возможно ли скопировать имя столбца и вставить его в качестве первой строки того же фрейма данных?
ПРИМЕЧАНИЕ: Поскольку файл не организован, данные отличаются в каждой строке. Из-за этого я избегал использования header = NONE.
Комментарии:
1. Как выглядит исходный файл, первые 2 строки?
2. да, если мы посмотрим внимательно, вторая строка имеет индекс только 0. В нем две строки.. После преобразования в фрейм данных отображается только одна строка
Ответ №1:
Одна из идей — создать список словарей и передать в DataFrame
конструктор:
out = []
with open("Sample.csv") as f:
for line in f:
d = dict([[y.strip('"') for y in x.split('=>')] for x in line.strip().split(',')])
out.append(d)
df = pd.DataFrame(out)
print (df)
Name Phone Id Admin Dept case
0 Mark 1234567 E1234 false NaN NaN
1 Anto 7654321 E4321 NaN HR nil
Файл:
"Name"=>"Mark","Phone"=>"1234567","Id"=>"E1234","Admin"=>false
"Name"=>"Anto","Phone"=>"7654321","Dept"=>"HR","Id"=>"E4321","case"=>nil
Комментарии:
1. Извините, я неправильно понял ваш вопрос. Исходный файл находится в сжатом формате, я получаю сообщение об ошибке типа ‘utf-8’ кодек не может декодировать байт 0x8b в позиции 1: недопустимый начальный байт. Я преобразовал файл в формат csv и последовал вашей идее, и я получаю ошибку типа: ожидаемый str, байты или os. Объект, подобный пути, а не фрейм данных
2. @JackJack — Хм, так есть проблема с чтением файла
utf-8
?3. Да, я попытался извлечь файл в формате CSV и передал этот файл по вашей идее. Я получаю «ошибку типа: ожидаемый str, байты или ос. Объект, подобный пути, а не фрейм данных»