我在元组之间有一个字典来列出值,例如:
{
('book1', 'US'): [1, 5],
('book2', 'CA'): [3]
}
元组表示pandasDataFrame
(可能还有其他列)中的列值,列表表示同一数据帧中单个列中的值。
假设我的数据帧看起来像这样:
book country value
0 book1 US 1
1 book1 US 9
2 book1 US 5
3 book2 MX 7
4 book2 CA 3
5 book1 CA 1
我想删除上面dict
表示的行,或者将这些行的值更改为0。
结果是:
book country value
0 book1 US 0
1 book1 US 9
2 book1 US 0
3 book2 MX 7
4 book2 CA 0
5 book1 CA 1
或:
book country value
0 book1 US 9
1 book2 MX 7
2 book1 CA 1
最好的方法是什么?
我想在一个相当大的数据帧上这样做,它应该尽可能高效。你知道吗
我的想法是这样做,但它似乎不是很有效(由于有多个loc
),我得到了重复的行,而不是删除行。(我不想使用drop_duplicates
,因为一开始可能有我不想删除的重复项)
data_frame.set_index(['book', 'country'], inplace=True)
for key, values in rows_to_remove.iteritems():
data_frame.loc[key] = data_frame.loc[key][~data_frame.loc[key]['value'].isin(values)]
data_frame.reset_index(inplace=True)
您可以创建元组列表并通过^{} 和^{} 检查成员身份:
对于按条件设置
0
,请使用loc
:另一种解决方案:
相关问题 更多 >
编程相关推荐