有没有办法通过Pandas中两列的逻辑比较进行分组?

时间:2012-11-15 15:39:29

标签: python pandas

我有一个具有以下结构的数据框:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 1152 entries, 0 to 143
Data columns:
cuepos             1152  non-null values
response           1152  non-null values
soa                1152  non-null values
targetpos          1152  non-null values
testorientation    1152  non-null values
dtypes: float64(3), int64(2)

cuepos列和targetpos列都包含12的整数值。

我想在cuepostargetpos之间按一致性对此数据进行分组。换句话说,我想生成两个组,一组用于cuepos == targetpos的行,另一组用于cuepos != targetpos

我似乎无法弄清楚如何做到这一点。我看着使用分组功能,但这些似乎只是在一个列上行动......或者我错了?有人能指出我正确的方向吗?

提前致谢! BLZ

2 个答案:

答案 0 :(得分:4)

您可以按多列分组:

  

df.groupby(['col1','col2'])。apply(lambda x:x ['col1'] == x ['col2'],轴= 1)

你也可以使用面具:

  

DF [df.col1 == df.col2]

答案 1 :(得分:3)

注意,如果您的目标是进行组计算,那么可以执行

df.groupby(df.col1 == df.col2).apply(f)

,结果将由True / False键入。