Python list to pandas dataframe

我怕爱的太早我们不能终老 提交于 2021-02-08 05:10:32

问题


I have a list that follows this format:

a=['date name','10150425010245 name1','10150425020245 name2']

I am trying to convert this to Pandas df:

newlist=[]
for item in a:
    newlist.append(item.split(' '))

Now, convert this to df:

pd.DataFrame(newlist)

which results in

                  0     1
0              date  name
1    10150425010245 name1
2    10150425020245 name2

I want to have 'date' and 'name' as header, but I can't manage to do that. Is there a more efficient way to automatically convert a list of strings into a dataframe than this?


回答1:


Here's one approach.

Use list comprehensions instead of loops.

In [160]: data = [x.split('') for x in a]

In [161]: data
Out[161]: [['date', 'name'], ['10150425010245', 'name1'], ['10150425020245', 'name2']]

Then use data[1:] as values and data[0] as column names.

In [162]: pd.DataFrame(data[1:], columns=data[0])
Out[162]:
             date   name
0  10150425010245  name1
1  10150425020245  name2



回答2:


you were on the right track. With slight modification, your code works fine.

    import pandas as pd
    a=['date name','10150425010245 name1','10150425020245 name2']
    newlist=[]
    for item in a:
        newlist.append(item.split(' '))

    newlist2=pd.DataFrame(newlist,columns=["date","name"])[1:]

    newlist2

    date            name
    10150425010245  name1
    10150425020245  name2



回答3:


Tempted to summarise the answers already given in one line:

a=['date name','10150425010245 name1','10150425020245 name2']
pd.DataFrame(
     map(str.split, a)[1:],
     columns=a[0].split(),
)

Output:

Out[8]:
              date  name
0   10150425010245  name1
1   10150425020245  name2


来源:https://stackoverflow.com/questions/29882965/python-list-to-pandas-dataframe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!