python - 只保留来自熊猫组的字典中没有 None 值的键
问题描述
>>> df = pd.DataFrame({'a': [1,1,1,2,2,3,3,3,3,4,4,5,5],
'b': [0,1,1,0,1,0,0,1,4,1,0,3,0],
'v': [2,4,3,7,6,5,9,3,2,4,5,2,3]})
>>> df
a b v
0 1 0 2
1 1 1 4
2 1 1 3
3 2 0 7
4 2 1 6
5 3 0 5
6 3 0 9
7 3 1 3
8 3 4 2
9 4 1 4
10 4 0 5
11 5 3 2
12 5 0 3
>>> df.groupby(by =['a', 'b']).v.apply(list).unstack().to_dict('index')
{1: {0: [2], 1: [4, 3], 3: None, 4: None}, 2: {0: [7], 1: [6], 3: None, 4:
None}, 3: {0: [5, 9], 1: [3], 3: None, 4: [2]}, 4: {0: [5], 1: [4], 3: None, 4:
None}, 5: {0: [3], 1: None, 3: [2], 4: None}}
如何在输出字典中避免使用 None 值的键?在目前的情况下,我的字典最终比仅使用所需的键大 20 倍。
解决方案
d = df.groupby(by =['a', 'b']).v.apply(list).unstack().to_dict('index')
d = {k: {kk: vv for kk, vv in v.items() if vv is not None} for k, v in d.items()}
# d == {1: {0: [2], 1: [4, 3]}, 2: {0: [7], 1: [6]}, 3: {0: [5, 9], 1: [3], 4: [2]}, 4: {0: [5], 1: [4]}, 5: {0: [3], 3: [2]}}
d
如果您在第二行中替换为您的df
链,您也可以在一行中执行此操作。
推荐阅读
- ios - 如何处理暂时不正确的 SafeAreaInsets?
- http - 在 proxy_pass 之前替换 nginx $uri 的第一部分
- javascript - 使用模板文字从对象数组中为变量赋值?
- c# - Unity,在 raycast 之上添加旋转。普通的
- html - 如何使用 CSS 动画在其上方的文本块后 2 秒内使文本滑动
- uitabbarcontroller - 如何将中心选项卡项更改为按钮,其作用类似于操作按钮?
- javascript - 如何将预加载脚本添加到 ElectronForge Webpack 项目?
- sql - 使用 SQL 提取空格前的第一个单词
- android - 如何在导航抽屉布局中使用回收站视图?
- python - 在 Python 中为需要单击完成的子进程模拟单击