python - 从字典列表中创建 Pandas DataFrame?每个字典作为 DataFrame 中的行?
问题描述
我已经阅读了几篇文章,但是,我无法弄清楚如何使用字典列表中的每个字典在 pandas Dataframe 中创建行。具体来说,我有两个问题,我对字典的有限经验无法解决。
- 到目前为止,我已将每个键和值分成两列,但是,我正在寻找的是为每个字典创建一行并将键用作列名。
- 只有每个字典中的第一个键是唯一的,因此我要么想完全删除它,要么只使用该键作为值来填充名为“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 | 单独列中的值 |
感谢您的任何见解!
解决方案
不管这些东西是什么
{'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)
非常紧凑的代码,但如果需要,您可以在循环中展开它。注意不要盲目地取出第一个元素,除非它是一个有序的字典,否则不保证第一个元素是相同的。
推荐阅读
- javascript - 在 Date.toLocaleString() 中,区域设置“ja-JP”不能以 2 位格式显示小时?
- ms-word - Office JavaScript API:在文档中滚动
- python - 有没有办法使用 matplotlib 插入具有重复值的系列?
- java - 如何在我的 Android 应用中添加睡眠定时器
- python - Get value from a list using BS4
- python - 在类中创建和声明列表
- c# - C# 在 For 循环中按值更改变量名
- c# - 静态字段没有改变?
- c++ - Linux 中的未知类型名称 uint64_t 和 uint16_t uint8_t
- apache-spark - 对 Spark/Graphx/Pregel 示例程序的停止条件感到困惑,以查找“路径距离”