从多个列表创建一个 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)
我的函数输出一个列表,例如当我输入:
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)