2015-01-29 3 views
0

Моя функция выводит список, например, когда я типа:создать кадр панды данных из нескольких списков

My_function('TV', 'TV_Screen') 

выводит следующее:

['TV', 1, 'TV_Screen', 0.04, 'True'] 

Теперь мой телевизор сделан из нескольких таких как динамик, трансформатор и т. д., я могу продолжать выполнять свою функцию для каждой части и, например, менять «TV_Screen» для «TV_Speaker» или «TV_transformer» и т. д.

Альтернативой является создание лис т со всей части, такие как:

TV_parts = ['TV_Screen', 'TV_Speaker', 'TV_transformer'] 

То, что я пытаюсь получить это кадр панды данных с 5 столбцов (потому что мои функции выходов 5 переменных, смотрите выше в разделе «выводит следующее:») и в этом случае 3 ряда (по одному для «TV_Screen», «TV_Speaker» и «TV_transformer»). В принципе я хочу следующее быть в кадре данных:

['TV', 1, 'TV_Screen', 0.04, 'True'] 
['TV', 9, 'TV_Speaker', 0.56, 'True'] 
['TV', 3, 'TV_transformer', 0.80, 'False'] 

Я знаю, что нужно для цикла где-то, но я не уверен, как создать этот фрейм данных. Не могли бы вы помочь? (Я могу изменить вывод моей функции как pd.Series или что-то еще, что будет работать лучше).

Спасибо!

+0

вы должны быть в состоянии сделать каждый из ваших списков 'pandas.Series', а затем объединить их вместе. По какой-то причине использование оси = 0 в 'pandas.concat' не делает то, что я ожидаю. Но если у вас есть список серий 'a'; то 'pandas.concat (a, axis = 1) .tranpose()' должен делать то, что вы хотите. – jraab

ответ

1

Вы можете сделать это следующим образом:

def My_function(part): 
    # prepare result 
    result = ['TV', 1, part, 0.04, 'True'] # for testing 
    return result 

TV_parts = ['TV_Screen', 'TV_Speaker', 'TV_transformer'] 
df = pd.DataFrame([My_function(part) for part in TV_parts]) 

>>> df 

    0 1    2  3  4 
0 TV 1  TV_Screen 0.04 True 
1 TV 1  TV_Speaker 0.04 True 
2 TV 1 TV_transformer 0.04 True 
+0

Удивительный! Спасибо за вашу помощь elyase! – user3495042

0

Если у вас есть много массивов, может быть стоит их преобразования в Numpy матрицу первого, а затем преобразовывать их в dataframe.

import pandas as pd 
import numpy as np 

a = ['TV', 1, 'TV_Screen', 0.04, 'True'] 
b = ['TV', 9, 'TV_Speaker', 0.56, 'True'] 
c = ['TV', 3, 'TV_transformer', 0.80, 'False'] 

matrix = np.matrix([a,b,c]) 

df = pd.DataFrame(data=matrix) 
Смежные вопросы