Как преобразовать одну строку в четыре разных столбца в блокноте jupyter с заголовками? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть файл Excel, состоящий из одной строки. Я импортировал в блокнот jupyter, и Iam пытается создать четыре столбца из этого ряда, используя панд в блокноте jupyter. Например строка:

имя: чарльз

электронная почта: char@gmail.com

ключ: 10223209asd

Резюме: это пример

имя: мозг

электронная почта: bria@gmail.com

ключ: 10390weq09asd

Резюме: это пример

Я бы хотел, чтобы столбцы были такими с информацией в каждой строке.

4 столбца: имя, адрес электронной почты, сводка ключей

1-й ряд: имена: чарльз электронная почта: char@gmail.com ключ: 10223209asd резюме: это ..

У меня также есть второй файл. Как взять две строки и разделить их на два столбца с заголовками.

Адрес электронной почты: steven@gmail.com

информация: это пример Эл. адрес. это больше, чем предложение долго.

Адрес электронной почты: chris@gmail.com

информация: это пример Эл. адрес. это больше, чем предложение долго.

Я бы хотел, чтобы столбцы были такими с информацией в 2 столбцах по электронной почте и с информацией.

1 Ответ

0 голосов
/ 05 сентября 2018

Использование reshape с конструктором DataFrame:

print (df)
                           col
0                name: charles
1        email: char@gmail.com
2             key: 10223209asd
3  summary: this is an example
4                  name: brain
5        email: bria@gmail.com
6           key: 10390weq09asd
7  summary: this is an example

cols = ['name','email','key','summary']
df1 = pd.DataFrame(df['col'].values.reshape(-1, 4), columns=cols)
print (df1)
            name                  email                 key  \
0  name: charles  email: char@gmail.com    key: 10223209asd   
1    name: brain  email: bria@gmail.com  key: 10390weq09asd   

                       summary  
0  summary: this is an example  
1  summary: this is an example  

Если хотите удалить значения до :

cols = ['name','email','key','summary']
df2 = pd.DataFrame(df['col'].str.split(':\s+').str[1].values.reshape(-1, 4), columns=cols)
print (df2)
      name           email            key             summary
0  charles  char@gmail.com    10223209asd  this is an example
1    brain  bria@gmail.com  10390weq09asd  this is an example

Общее решение - создать DataFrame на str.split, затем подсчитать дубликаты на cumcount и последнее изменение на unstack:

df2 = df['col'].str.split(':\s+', expand=True)
df2.columns = ['key','val']

df2 = df2.set_index([df2.groupby('key').cumcount(), 'key'])['val'].unstack()
print (df2)
key           email            key     name             summary
0    char@gmail.com    10223209asd  charles  this is an example
1    bria@gmail.com  10390weq09asd    brain  this is an example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...