从字典列表创建数据框架?每个字典作为数据帧中的行?

2024-10-02 08:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经读过好几篇文章,但是,我无法理清如何使用字典列表中的每一个字典在数据框中创建一行。具体来说,我有两个问题是我有限的字典经验无法解决的

  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')
^{tb1}$

感谢您的任何见解


Tags: 数据id列表字典文章lengthmassaa
2条回答

不管这些东西是什么

{'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,否则第一个元素不能保证是相同的

您可以尝试以下方法:

df = pd.DataFrame.from_dict(pep_list, orient='index').reset_index()

orient将键更改为dataframe中的一列,reset_索引用于重置索引,尽管在您的情况下可能不需要它

之后,您可以筛选出所需的列

相关问题 更多 >

    热门问题