熊猫:如何将字符串转换为DataFrame

时间:2019-08-06 11:13:30

标签: python string pandas dataframe

嗨,我有以下数据(字符串),正在努力将其转换为熊猫数据框。

任何帮助将不胜感激!

pd.DataFrame中带有“,”的delim在给定逗号的情况下不起作用。

[["Time","Forecast"],["2019-07-08T23:00:00Z",20],["2019-07-08T23:30:00Z",26],["2019-07-09T00:00:00Z",24],["2019-07-09T00:30:00Z",26]]

3 个答案:

答案 0 :(得分:3)

IIUC,您可以使用ast.literal_eval

s='[["Time","Forecast"],["2019-07-08T23:00:00Z",20],["2019-07-08T23:30:00Z",26],["2019-07-09T00:00:00Z",24],["2019-07-09T00:30:00Z",26]]'
l=ast.literal_eval(s) #convert to actual list of list
df=pd.DataFrame(l[1:],columns=l[0])

                   Time  Forecast
0  2019-07-08T23:00:00Z        20
1  2019-07-08T23:30:00Z        26
2  2019-07-09T00:00:00Z        24
3  2019-07-09T00:30:00Z        26

答案 1 :(得分:0)

import pandas as pd
from collections import defaultdict 

lst = [["Time","Forecast"],["2019-07-08T23:00:00Z",20],["2019-07-08T23:30:00Z",26],["2019-07-09T00:00:00Z",24],["2019-07-09T00:30:00Z",26]]
map = defaultdict(list) 
keys = lst[0] 
for i, el in enumerate(lst): 
    if i != 0: 
        map[keys[0]].append(el[0]) 
        map[keys[1]].append(el[1]) 

pd.DataFrame(map)                                                                                                                                                                                                                                    

   Forecast                  Time
0        20  2019-07-08T23:00:00Z
1        26  2019-07-08T23:30:00Z
2        24  2019-07-09T00:00:00Z
3        26  2019-07-09T00:30:00Z

答案 2 :(得分:0)

您可以根据数据制作适当的字典,并使用它创建df。

>>> import pandas as pd
>>> from collections import defaultdict
>>> data = [["Time","Forecast"],["2019-07-08T23:00:00Z",20],["2019-07-08T23:30:00Z",26],["2019-07-09T00:00:00Z",24],["2019-07-09T00:30:00Z",26]]
>>> columns = data[0]
>>> rows = data[1:]
>>> d = defaultdict(list)
>>> for item in rows:
...     d[columns[0]].append(item[0])
...     d[columns[1]].append(item[1])
...
>>> df = pd.DataFrame(d)
>>> df
                   Time  Forecast
0  2019-07-08T23:00:00Z        20
1  2019-07-08T23:30:00Z        26
2  2019-07-09T00:00:00Z        24
3  2019-07-09T00:30:00Z        26
>>>