Python - Создание фрейма данных, транспонирование и объединение его для получения таблицы - PullRequest
0 голосов
/ 19 января 2019

Я изучаю Python, и у меня есть вопрос, связанный с созданием фрейма данных для каждых 5 строк, транспонированием и объединением фреймов данных.

У меня есть файл .txt со следующим вводом. В нем тысячи строк, и мне нужно пройти каждую строку до конца файла.

Name,Kamath
Age,23
Sex,Male
Company,ACC
Vehicle,Car
Name,Ram
Age,32
Sex,Male
Company,CCA
Vehicle,Bike
Name,Reena
Age,26
Sex,Female
Company,BARC
Vehicle,Cycle

Мне нужно получить это как вывод:

Name,Age,Sex,Company,Vehicle
Kamath,23,Male,ACC,Car
Ram,32,Male,CCA,Bike
Reena,26,Female,BARC,Cycle

1 Ответ

0 голосов
/ 19 января 2019

Используйте read_csv для DataFrame, а затем pivot с cumcount для счетчика для нового индекса:

import pandas as pd

temp=u"""Name,Kamath
Age,23
Sex,Male
Company,ACC
Vehicle,Car
Name,Ram
Age,32
Sex,Male
Company,CCA
Vehicle,Bike
Name,Reena
Age,26
Sex,Female
Company,BARC
Vehicle,Cycle"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.txt'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a','b'])

print (df)
          a       b
0      Name  Kamath
1       Age      23
2       Sex    Male
3   Company     ACC
4   Vehicle     Car
5      Name     Ram
6       Age      32
7       Sex    Male
8   Company     CCA
9   Vehicle    Bike
10     Name   Reena
11      Age      26
12      Sex  Female
13  Company    BARC
14  Vehicle   Cycle

df = pd.pivot(index=df.groupby('a').cumcount(),
              columns=df['a'],
              values=df['b'])
print (df)
a Age Company    Name     Sex Vehicle
0  23     ACC  Kamath    Male     Car
1  32     CCA     Ram    Male    Bike
2  26    BARC   Reena  Female   Cycle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...