从字典列表创建 Pandas DataFrame?每个字典作为 DataFrame 中的行?

Creating a Pandas DataFrame from list of dictionaries? Each dictionary as row in DataFrame?

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

  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 columns of keys
dictionary 1 values in seperate columns
dictionary 2 values in seperate columns

感谢您的任何见解!

不管这些东西是什么

{'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)

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