【发布时间】:2020-08-11 21:04:49
【问题描述】:
这个问题一方面帮助一方面帮助好奇心,所以我有一个字典,一旦我的所有条件都被迭代完,我就会将它附加到一个列表中:
for col, row in df.iterrows():
up_list = []
if row['id_check'] == 'Add all':
l = {'external': {'om': {'id' : row['posm']},
'wd': {'id': row['wdp']},
'wk': {'id': row['tw'].replace('ru: ', '')}
}
}
up_list.append(l)
基本上,我正在向 dict l 添加多个键和值,我的主要问题是,提供 'id' == 'None' 的值之一我不想将整个键值对添加到字典中。
所以最好的情况输出如下:
final_l = {'external': {'om': {'id' : '123'},
'wd': {'id': '456'},
'wk': {'id': '789'}
}}
但是:根据其相应的数据帧值提供这些值之一== 'None',我不想用 None 替换“id”,我根本不想在那里,所以最好说@ 987654325@ 然后输出字典看起来像:
final_l = {'external': {'om': {'id' : '123'},
'wd': {'id': '456'}
}}
但我唯一能得到的是:
final_l = {'external': {'om': {'id' : '123'},
'wd': {'id': '456'},
'wk': {'id': 'None'}
}}
这对我的用例来说不是最优的。那么,如何根据对应的数据帧值从字典中删除(甚至不添加)特定的键值对?此外,如果有更好的方法可以做到这一点,我非常愿意接受,因为这“有效”,但上帝不优雅。
编辑示例数据框:
id_check om wd wk
0 Add all 123 None 789
1 Add all 472 628 None
2 Add None 528 874 629
【问题讨论】:
-
你能添加一个数据框的样本吗?
-
@MrNobody33 编辑了帖子,下面是示例 df。
-
'Add_all'的另一种情况是什么?我的意思是,如果row['id_check'] != 'Add all'会发生什么? @SebastianGoslin -
@MrNobody33
Add None这是一个传递,我在这个循环中创建的字典的特定部分不会被附加。 -
准备好了,刚刚添加了一个方法@SebastianGoslin!
标签: python pandas dictionary