首页 > 解决方案 > 在Python中将值列表拆分为数据框

问题描述

所以我试图在 Python 中将值列表拆分为数据框。

这是我的列表的示例

    ini_string1 = "Time=2014-11-07 00:00:00,strangeness=0.0001,p-value=0.19,deviation=0.78,D_Range=low'"
    templist = []  
    for i in range(5):
        templist.append({ini_string1})

现在我试图用Time, Strangeness, P-Values, Deviation,D_Range作为变量创建一个数据框。

当我只有一个单一的值时,我能够获得一个数据框,但当我有值ini_string列表时无法获得它。

下面是我尝试使用单值的示例代码ini_string

lst_dict = []

cols = ['Time','Strangeness', 'P-Values', 'Deviation', 'Is_Deviation']
# Initialising string 

for i in range(5):
    ini_string1 = "Time=2014-11-07 00:00:00,strangeness=0.0001,p-value=0.19,deviation=0.78,D_Range=low'"

tempstr = ini_string1 
res = dict(item.split("=") for item in tempstr.split(","))
lst_dict.append({'Time': res['Time'],
                 'Strangeness': res['strangeness'],
                 'P-Values': res['p-value'],
                 'Deviation': res['deviation'],
                 'Is_Deviation': res['D_Range']})

print(lst_dict)

strdf = pd.DataFrame(lst_dict, columns=cols)

我无法弄清楚值列表的实现

标签: pythonpython-3.x

解决方案


下面的代码将完成这项工作。

from collections import defaultdict
import pandas as pd

ini_string1 = "Time=2014-11-07 00:00:00,strangeness=0.0001,p-value=0.19,deviation=0.78,D_Range='low'"
ini_string2 = "Time=2015-12-07 00:00:00,strangeness=0.0005,p-value=0.31,deviation=0.01,D_Range='high'"

ini_strings = [ini_string1, ini_string2] 

dd = defaultdict(list)
for ini_str in ini_strings:
    for key_val in ini_str.split(','):
        k, v = key_val.split('=')
        dd[k].append(v)

df = pd.DataFrame(dd)

阅读更多关于defaultdict- collections.defaultdict 如何工作?
Python 还有其他有趣的数据结构 - https://docs.python.org/2/library/collections.html


推荐阅读