从多个列表创建一个 pandas 数据框

create a pandas data frame from several lists

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

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 列的 pandas 数据框(因为我的函数输出 5 个变量,请参阅上面的 "it outputs the following:" 部分),在本例中是 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 或其他更好的输出)。

谢谢!

你可以这样做:

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

如果您有很多数组,可能值得先将它们转换为 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)