从python字典构建数据框

贾亚斯里·斯里达

我有下面的 python 字典。字典的十进制值可以改变,但字符串值保持不变。字典的结构也是一样的。在这种情况下,是否可以从字典中构建数据框(如下所示的格式)?

Python字典:

d1=
{'Type 1 Result': 'CO (mg/km) THC (mg/km) NMHC (mg/km) NOX (mg/km) THC + NOX (mg/km) PM (mg/km) PN (#.1011/km)  Measured(8) (9)  104.70  21.00  -  9.20  -  0.20  0.03 Ki x (8) (10) - - - - (11) - - Ki + (8) (10) 2.9541 0.1158 - 1.9789 (11) 0.0265 N/A Mean value calculated with Ki (M x Ki) or M+Ki) (9)   107.65   21.12   -   11.18   (12)   0.23   0.03 DF (+) (8) (10) 58.5770 - - 10.0990 5.0210 0.0000 0.0000 DF (x) (8) (10) - - - - - - - Final mean value calculated with Ki and DF (13)  166.2  21.1  -  21.3  37.3  0.23  0.03 Limit value 500 N/A N/A 80 170 4.5 6.0'}

所需的数据帧格式:

在此处输入图片说明

唐基

这确实是可能的。因为您的字典不包含超过 1 个键/值对,我建议将其合并为一个字符串:

my_string = f"{list(d1.keys())[0]} {list(d1.values())[0]}"

接下来,您可以标记列和行的“常量”值:

COL_ROWS = ["Type 1 Result", "CO \(mg/km\)", "THC \(mg/km\)", "NMHC \(mg/km\)", "NOX \(mg/km\)", "THC \+  PM \(mg/km\)", "PN \(#\.1011/km\)", "Measured\(8\) \(9\)", "Ki x \(8\) \(10\)", "Ki \+ \(8\) \(10\)", "Mean value calculated with Ki \(M x Ki\) or M\+Ki\) \(9\)", "DF \(\+\) \(8\) \(10\)", "DF \(x\) \(8\) \(10\)", "Final mean value calculated with Ki and DF \(13\)", "Limit value"]

随后,如果您删除出现在字符串COL_ROWSmy_string使用:如果子字符串包含在列表中,则从字符串中删除子字符串

import re
p = re.compile('|'.join(COL_ROWS ))
my_string = p.sub("", my_string).strip() 

您将获得一个字符串,其中每个值都用空格分隔。然后,您可以简单地elements = my_string.split()将它们整齐地列在列表中。

最后,您只需通过遍历列和元素来实现使用该数据初始化 DataFrame 的逻辑。

一种可能性是:

# separate headers from content
COLS, CONTENT = COL_ROWS[:8], COL_ROWS[8:]
    
all_cols = {}
for i in range(len(CONTENT)):
    # store column name
    col = [CONTENT[i].replace('\\', '']
    # add values
    col += el[i * 7: (i+1) * 7]
    # store in dict
    all_cols[COLS[i]] = col

# initialize DF with dict
final_df = pd.DataFrame(all_cols)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章