首页 > 解决方案 > 如何删除字典 pandas env 列表中的键/值对

问题描述

我想在代码片段中运行 applymap() re data。

我尝试使用此代码从列表中丢弃键“P”: d = [i for i in data if not (i['P'] == 5.5|4.5)], 我得到: TypeError: list indices must be integers or slices, not str 目标:是消除键“P”及其值,并在我可以 applymap() 之前消除“空列表”

**Desired Result** after running applymap() to ['A']

0     2.165\n1.675
1     1.895\n1.888
2     2.085\n1.73
3     2.275\n1.616
4     1.685\n1.65
5     2.448\n2.085.....

However, with 'P' key & empty [] this is not possible hence.

如何在 Pandas/DataFrame 环境中执行此操作?

data = 
    [[{'A': 2.165, 'G': 19, 'T': 180}, {'A': 1.675, 'G': 19, 'T': 181}],
    [{'A': 1.895, 'G': 19, 'T': 180}, {'A': 1.888, 'G': 19, 'T': 181}],
    [{'A': 2.085, 'G': 19, 'T': 180}, {'A': 1.73, 'G': 19, 'T': 181}],
    [{'A': 2.275, 'G': 19, 'T': 180}, {'A': 1.616, 'G': 19, 'T': 181}],
    [{'A': 1.685, 'G': 15, 'P': 5.5, 'T': 12},
    {'A': 1.65, 'G': 62, 'P': 4.5, 'T': 13}],
    [{'A': 2.448, 'G': 19, 'T': 180}, {'A': 1.54, 'G': 19, 'T': 181}],
    [{'A': 2.085, 'G': 19, 'T': 180}, {'A': 1.73, 'G': 19, 'T': 181}],
    [],
    ]

标签: python-3.xpandasdataframe

解决方案


正如评论中所讨论的,您可以将列表理解与过滤器结合使用来满足您的需求:

['\n'.join(str(e['A']) for e in row if 'A' in e) for row in data if row]

# ['2.165\n1.675', 
#  '1.895\n1.888', 
#  '2.085\n1.73', 
#  '2.275\n1.616', 
#  '1.685\n1.65', 
#  '2.448\n1.54', 
#  '2.085\n1.73']

推荐阅读