从几个列表中创建一个pandas数据框

时间:2015-01-29 01:09:50

标签: python for-loop pandas dataframe data-manipulation

我的函数输出一个列表,例如当我输入:

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个变量,参见上面的#34部分;它输出以下内容:"),在这种情况下是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']

我知道我需要一个for循环,但我不知道如何创建这个数据框。能否请你帮忙? (我可以将我的函数的输出更改为pd.Series或其他可以更好地工作的东西。)

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果您有许多数组,可能需要先将它们转换为numpy矩阵,然后将它们转换为数据帧。

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)