首页 > 解决方案 > 从字典列表中创建 Pandas DataFrame?每个字典作为 DataFrame 中的行?

问题描述

我已经阅读了几篇文章,但是,我无法弄清楚如何使用字典列表中的每个字典在 pandas Dataframe 中创建行。具体来说,我有两个问题,我对字典的有限经验无法解决。

  1. 到目前为止,我已将每个键和值分成两列,但是,我正在寻找的是为每个字典创建一行并将键用作列名。
  2. 只有每个字典中的第一个键是唯一的,因此我要么想完全删除它,要么只使用该键作为值来填充名为“id”的列。

字典示例列表(总共> 500k):

pep_list=[{'HV404': 'WVLSQVQLQESGPGLVKPSGTLSLTCAVSGGSISSSNWWSWVR',
          'gene': 'HV404',
          'aa_comp': {'W': 4,
       'V': 5,
       'L': 5,
       'S': 10,
       'Q': 3,
       'E': 1,
       'G': 5,
       'P': 2,
       'K': 1,
       'T': 2,
       'C': 1,
       'A': 1,
       'I': 1,
       'N': 1,
       'R': 1},
      'peptide': ['WVLSQVQLQESGPGLVKPSGTLSLTCAVSGGSISSSNWWSWVR'],
      'Length': 43,
      'z': 3,
      'Mass': 4557,
      'm/z': 1519.0}, 
    {'A0A0G2JNQ3': 'ISGNTSR',
          'gene': 'A0A0G2JNQ3',
          'aa_comp': {'I': 1, 'S': 2, 'G': 1, 'N': 1, 'T': 1, 'R': 1},
          'peptide': ['ISGNTSR'],
          'Length': 7,
          'z': 2,
          'Mass': 715,
          'm/z': 357.5},etc.]

预期输出:

Dataframe = pd.DataFrame({values from dictionaries}, columns=["id", "gene", 'aa_comp', 'peptide', 'length', 'z', 'mass','m/z')
ID 键列
字典 1 单独列中的值
字典 2 单独列中的值

感谢您的任何见解!

标签: pythonpandaslistdictionarykey

解决方案


不管这些东西是什么

{'HV404': 'WVLSQVQLQESGPGLVKPSGTLSLTCAVSGGSISSSNWWSWVR',}
{'A0A0G2JNQ3': 'ISGNTSR',}

搞砸了,而且看起来不需要它们,因为信息是重复的。

如果你想取出一个非代表性的钥匙,你可以做这样的事情

key_intersect = set(pep_list[0].keys()).intersection(set(pep_list[1].keys()))
new_list_of_dictionaries = [{key:value for (key,value) in dicts.items() if key in key_intersect} for dicts in pep_list]
df = pd.DataFrame(new_list_of_dictionaries)

非常紧凑的代码,但如果需要,您可以在循环中展开它。注意不要盲目地取出第一个元素,除非它是一个有序的字典,否则不保证第一个元素是相同的。


推荐阅读