2013-06-18 57 views
0

我有一个数据框,其中包含2个名为data_type和input_type的列。RPy2,具有多个条件的子集数据帧

为了获得其中DATA_TYPE柱具有一定的值I可以使用数据帧的所述子集:

subset_frame = dataframe.rx(dataframe.rx2('input_type').ro == 'VALUE', True) 

我可以做柱INPUT_TYPE相同。但是我还没有设法解决如何在一个操作中结合这两个条件。从rpy2文档,我期望应该工作是

new_frame = dataframe.rx((dataframe.rx2('input_type').ro == 'VALUE1').ro 
           & dataframe.rx2('data_type').ro == 'VALUE2').ro, 
           True) 

但是,这也行不通。这样做的正确方法是什么?

回答

1

一个.ro是多余的:

new_frame = all_data_frame.rx((dataframe.rx2('input_type').ro == 'VALUE1').ro 
           & (dataframe.rx2('data_type').ro == 'VALUE2'), 
           True) 

否则这可能会更改为and,不&。后者是Python中的一个按位运算符。

>>> 1 & 2 # 0b01 & 0b10 
0 
>>> 1 & 3 # 0b01 & 0b11 
1 
+0

我使用&基于此示例中的文档 被'>>> I =(x.ro> = 2)&.RO(x.ro <= 4)'#提取物2之间的值和4 –

+0

啊。我太匆忙地在键盘上乱了一下:这可能是rpy2的API中的一个错误。否则,文档中的示例显示为什么这不适用于您。我编辑了我的答案,使其更清晰。 – lgautier

+0

仍然不能正常工作,这是错误:'ValueError:目前没有什么可以为类型完成。“ –