【问题标题】:Convert list of dicts to pandas columns将 dicts 列表转换为 pandas 列
【发布时间】:2015-08-25 21:22:35
【问题描述】:

我有一个 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 数据框列,并将值映射到原始行?

【问题讨论】:

    标签: python dictionary pandas


    【解决方案1】:

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

    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  
    

    【讨论】:

    • 我不是在尝试创建数据框,而是将字典列表中的值作为新列映射到从中读取它们的特定行。
    • 请查看编辑以查看是否与您想要的输出匹配。如果没有,您能否发布一个最终输出的示例?
    猜你喜欢
    • 2021-07-25
    • 2017-12-19
    • 2017-05-17
    • 2021-06-22
    • 2021-03-01
    • 2015-12-14
    • 1970-01-01
    • 2019-11-28
    • 2022-01-24
    相关资源
    最近更新 更多