簡體   English   中英

從列表名稱作為列名稱的多個列表創建數據框

[英]Creating a dataframe from multiple lists with list names as column names

我有3個列表:

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

我想創建一個如下所示的數據幀(列表名稱為列名):

在此輸入圖像描述

這就是我正在做的這個數據幀:

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

我想知道是否有更好的方法來做到這一點

最快的方法:

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})

列中的數據框

請注意, 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

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']))
    name=['Robert']
    age=['25']
    gender=['m']
    data = pd.DataFrame({"name":name,"age":age,"gender":gender})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM