2015-04-26 2 views
1

У меня есть список, который имеет следующий формат:список Python для панды dataframe

a=['date name','10150425010245 name1','10150425020245 name2'] 

Я пытаюсь преобразовать это панды ДФ:

newlist=[] 
for item in a: 
    newlist.append(item.split(' ')) 

Теперь, преобразовать это в ДФ:

pd.DataFrame(newlist) 

что приводит к

    0  1 
0    date name 
1 10150425010245 name1 
2 10150425020245 name2 

Я хочу иметь «дату» и «имя» как заголовок, но я не могу этого сделать. Есть ли более эффективный способ автоматического преобразования списка строк в dataframe, чем это?

ответ

2

Вот один из подходов.

Использовать списки, а не циклы.

In [160]: data = [x.split('') for x in a] 

In [161]: data 
Out[161]: [['date', 'name'], ['10150425010245', 'name1'], ['10150425020245', 'name2']] 

Затем используйте data[1:] как значения и data[0] как имена столбцов.

In [162]: pd.DataFrame(data[1:], columns=data[0]) 
Out[162]: 
      date name 
0 10150425010245 name1 
1 10150425020245 name2 
+0

Спасибо! Это работает. Он должен быть x.split (''), но кроме этого он работает. – Anastasia

+0

Спасибо за редактирование. – Zero

4

Вы были на правильном пути. С небольшими изменениями ваш код работает нормально.

import pandas as pd 
    a=['date name','10150425010245 name1','10150425020245 name2'] 
    newlist=[] 
    for item in a: 
     newlist.append(item.split(' ')) 

    newlist2=pd.DataFrame(newlist,columns=["date","name"])[1:] 

    newlist2 

    date   name 
    10150425010245 name1 
    10150425020245 name2 
1

Tempted суммировать ответы уже приведенные в одной строке:

a=['date name','10150425010245 name1','10150425020245 name2'] 
pd.DataFrame(
    map(str.split, a)[1:], 
    columns=a[0].split(), 
) 

Выход:

Out[8]: 
       date name 
0 10150425010245 name1 
1 10150425020245 name2 
+0

thats cool! thx :) –

+0

Не совсем. Здесь два вопроса. 1) Результат будет содержать имена столбцов, скорее это должно быть 'pd.DataFrame (map (str.split, a) [1:], columns = ['date', 'name'])' 2) Имена столбцов должны скорее взятый из списка, чем его передача вручную. – Zero

+0

Индекс начиная с 1 был беспокойством. Обновил его с вашими комментариями. – fixxxer

Смежные вопросы