我有3个列表:
name = ['Robert']
age = ['25']
gender = ['m']
我想创建一个如下所示的数据框(列表名称作为列名称):
这就是我要获取此数据框的目的:
data=pd.DataFrame([name,age,gender]).T
data.columns=['name','age','gender']
我想知道是否有更好的方法
答案 0 :(得分:1)
最快的方法:
pd.DataFrame(dict(name=['Robert'],age=['25'],gender=['m']))
pd.DataFrame
将data
作为第一个参数,即:numpy.ndarray
,dict
或DataFrame
。
考虑到您没有比定义的name
,age
和gender
多的变量,我认为这可能有用:
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})