【发布时间】:2015-03-10 18:48:12
【问题描述】:
我有一个数据框,我想选择符合某些条件的行。条件是其他列的值和一些附加值的函数。
这是一个玩具示例:
>>df = pd.DataFrame({'A': [1,2,3,4,5,6,7,8,9],
'B': [randint(1,9) for x in xrange(9)],
'C': [4,10,3,5,4,5,3,7,1]})
>>
A B C
0 1 6 4
1 2 8 10
2 3 8 3
3 4 4 5
4 5 2 4
5 6 1 5
6 7 1 3
7 8 2 7
8 9 8 1
我想选择某个函数返回 true 的所有行,例如如果乘法 AxC 在指定的列表 L 中,则 f(a,c,L) 返回 true,例如 L=[4,20,30](尽管该函数可能不那么简单)。也就是说,我想得到:
>>
A B C
0 1 6 4
1 2 8 10
3 4 4 5
4 5 2 4
5 6 1 5
同样,我想添加第四个二进制列“匹配”,即 True 是 L 中的 AxC:
A B C matched
0 1 2 4 True
1 2 5 10 True
2 3 6 3 False
3 4 3 5 True
4 5 2 4 True
5 6 6 5 True
6 7 4 3 False
7 8 5 7 False
8 9 2 1 False
(添加此列后,您可以轻松选择所有带有 True 的行,但我怀疑一旦您可以添加,您也可以选择)。
是否有一种高效且优雅的方法可以在不显式迭代所有索引的情况下做到这一点? 谢谢!
【问题讨论】:
标签: function select pandas add dataframe