2015-05-29 2 views
56

Как взять несколько списков и поместить их как разные столбцы в фреймворк python? Я пробовал следовать за Read lists into columns of pandas DataFrame, но имел некоторые проблемы.Возьмите несколько списков в dataframe

Попытка 1:

  • Есть три списка, и пронестись их вместе и использовать, что рес = застежка-молния (lst1, lst2, lst3)
  • Урожайность только один столбец

Попытка 2:

percentile_list = pd.DataFrame({'lst1Tite' : [lst1], 
'lst2Tite' : [lst2], 
'lst3Tite':[lst3] 
    }, columns=['lst1Tite','lst1Tite', 'lst1Tite']) 

- дает либо одну строку с помощью 3-х столбцов (способ выше), или если я транспонирование это 3 строки и 1 столбец

Как получить 100 строк (длина каждого независимого списка) на 3 столбца (три списка) pandas dataframe?

ответ

110

Я думаю, вы уже почти там, попробуйте удалить лишние квадратные скобки ПЛСА (также не нужно указывать имена столбцов, когда вы создаете dataframe из Словаря, как это):

lst1 = range(100) 
lst2 = range(100) 
lst3 = range(100) 
percentile_list = pd.DataFrame(
    {'lst1Title': lst1, 
    'lst2Title': lst2, 
    'lst3Title': lst3 
    }) 

percentile_list 
    lst1Title lst2Title lst3Title 
0   0   0   0 
1   1   1   1 
2   2   2   2 
3   3   3   3 
4   4   4   4 
5   5   5   5 
6   6   6   6 
... 

Если вам нужно несколько более производительное решение, которое вы можете использовать np.column_stack, а не zip как в первую попытке, это имеет около ого ускорения на примере здесь, однако приходит в немного стоимости читаемости на моем взгляде:

percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]), 
           columns=['lst1Title', 'lst2Title', 'lst3Title']) 
+0

Отлично! Большое спасибо, соглашусь, когда это позволит мне! – jfalkson

+1

Я использую этот ответ много. Спасибо. –

+0

Это прекрасно. Спасибо –

8

Просто добавив, что при использовании первого подхода может быть сделано -

pd.DataFrame(list(map(list, zip(lst1,lst2,lst3)))) 
16

Добавление в ответ здесь Aditya Guru «s. Нет необходимости использовать карту. Вы можете сделать это просто:

pd.DataFrame(list(zip(lst1, lst2, lst3))) 

Это установит имена столбцов как 0,1,2. Чтобы задать свои собственные имена столбцов, вы можете передать аргумент ключевого слова columns вышеописанному методу.

pd.DataFrame(list(zip(lst1, lst2, lst3)), 
       columns=['lst1_title','lst2_title', 'lst3_title']) 
Смежные вопросы