将dicts列表转换为pandas列

时间:2015-08-25 21:22:35

标签: python dictionary pandas

我有一个pandas数据框,其中包含一个包含字符串的列,如下所示:

"Hex:6; HexNAc:3; NeuNAc:1}"
"Fuc:1; Hex:7; HexNAc:2}"

我编写了以下函数,将此文本转换为具有键值对的字典,如下所示:

def create_monosacch_columns(glycan_ident):
glycans = glycan_ident.split("}")[0].split("; ")
monosaccharides = []
for entry in glycans:
    key, val = entry.split(":")
    monosacc = {key:val}
    monosaccharides.append(monosacc)
    return monosaccharides

输出:

[{'Hex': '6'}, {'HexNAc': '3'}, {'NeuNAc': '1'}]
[{'Fuc': '1'}, {'Hex': '7'}, {'HexNAc': '2'}]

如何将这些dicts列表转换为pandas dataframe列,并将值映射到原始行?

1 个答案:

答案 0 :(得分:0)

不完全确定您希望最终输出显示的内容,但如果您不介意使用NA,则可以尝试将字典列表作为数据框附加到原始数据框。会有NAns,但在进行分析时可以将其删除。

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('HexNAc',"NeuNAc"))

数据框如下所示:

HexNAc  NeuNAc
   1       2
   3       4

如果查看字典的示例列表,

temp= [{'Hex': '6'}, {'HexNAc': '3'}]

然后,您可以将此列表转换为自己的数据框,并将其附加到您已有的数据框中。

df2 = pd.DataFrame(temp)
df = df.append(df2)

最终列表如下所示:

HexNAc NeuNAc
   1      2 
   3      4 
   3      NaN 
   NaN    1