从多个列表中创建数据框,其中列表名称作为列名

3

我有3个列表:

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

我希望创建一个数据框,类似下面展示的那样(以列表名称作为列名):

enter image description here

这是我获取这个数据框的方法:

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

我想知道是否有更好的方法来完成这个任务


@lmiguelvargasf 是的...但是我想要的是一种更符合Python风格的方法来实现它。 - RemyM
只需要 nameagegender - RemyM
4个回答

2

从列创建数据框

请注意,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)))

1

最快的方法:

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

pd.DataFrame的第一个参数是data,可以是: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})

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']))

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接