从多个列表创建数据框,并将列表名称作为列名称

时间:2018-08-07 06:36:46

标签: python list pandas dataframe

我有3个列表:

name = ['Robert']
age = ['25']
gender = ['m']

我想创建一个如下所示的数据框(列表名称作为列名称):

enter image description here

这就是我要获取此数据框的目的:

data=pd.DataFrame([name,age,gender]).T
data.columns=['name','age','gender']

我想知道是否有更好的方法

4 个答案:

答案 0 :(得分:1)

最快的方法:

pd.DataFrame(dict(name=['Robert'],age=['25'],gender=['m']))

pd.DataFramedata作为第一个参数,即:numpy.ndarraydictDataFrame

考虑到您没有比定义的nameagegender多的变量,我认为这可能有用:

not_my_data = set(dir())
# define your variables
name=['Robert']
age=['25']
gender=['m'].

my_data = set(dir()) - not_my_data

pd.DataFrame({k:globals()[k] for k in my_data})

答案 1 :(得分:1)

列中的数据框

请注意pd.DataFrame构造函数接受映射到值列表的列标签字典。因此,您可以使用:

df = pd.DataFrame({'name': name, 'age': age, 'gender': gender'})

行中的数据框

或者,您可以使用列表理解和zip来提供行。这将创建一个列表列表,每个子列表代表一行:

name = ['Robert']
age = ['25']
gender = ['m']

L = [list(row) for row in zip(name, age, gender)]
df = pd.DataFrame(L, columns=['name', 'age', 'gender'])

print(df)

     name age gender
0  Robert  25      m

以上功能可以使用map编写:

L = list(map(list, zip(name, age, gender)))

答案 2 :(得分:0)

选项1

d = {'name':['Robert'],'age':['25'],'gender':['m']}
pd.DataFrame.from_dict(d)

选项2 快速生成dict-

pd.DataFrame.from_dict(dict(name=['Robert'], age=['25'], gender=['m']))

答案 3 :(得分:0)

    name=['Robert']
    age=['25']
    gender=['m']
    data = pd.DataFrame({"name":name,"age":age,"gender":gender})