熊猫:比较来自不同Colum的连续行

时间:2018-03-15 18:08:41

标签: pandas indexing rows python-2.x

我很难比较两个连续的行形成不同的列,两列都有布尔值。我需要创建一个名为" lasthit"的新列。使用布尔值,评估列的第i行是否"响应"等于列的第i行+ 1行"信心"。为此,我有以下代码:

这是mi数据帧(它实际上是[2539行x 19列]矩阵):

      circle_rt    response   circle_number confidence confidence_rt  nose  \
0     12.746130     True              0       True      26.686977  0.000000   
1      5.497027     True              6       True       2.219596  0.120000   
2      3.789324     True              2       True       4.992639  0.118931   
3      7.716839     True              2       True       3.139458  0.067106   
4      4.219006     True              7       True       2.680553  0.000000   
5      6.635735     True              1       True       1.643296  0.015449   
6     12.768281    False              2       True       2.045460  0.000000   
7      4.293818     True              0       True       1.915654  0.060843   
8      2.280957     True              5       True       2.384980  0.000000   

例如,比较"响应"中第6行的真值。 "置信度"中的第7行," lashit"应该是正确的,因为它们不相等。

df.index = pd.RangeIndex(len(df.index))
for i in range (0,len(df)):
    for j in range (1,len(df.loc[0])):
        df['hitlast']=(df.response.loc[j-1] == df.confidence.loc[j])
        #sumhitlast=+df.response.loc[j-1] == df.confidence.loc[j]

df.head()
print(df)

当我这样做时,我得到以下

                       filename                           subject       hitlast
0      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
1      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
2      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
3      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
4      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
5      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
6      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
7      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
8      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
9      datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
10     datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
11     datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
12     datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
13     datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   
14     datos\1479123701 - 1.meta.out   datos\1479123701 - 1.meta.out    True   

问题在于" hitlast"中的所有值。是正确的,并且由于比较"响应"中第6行的真值,应该有1个假。 "置信"!

中的第7行

我不知道这里有什么问题,我不确定它是否是索引问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

IIUC,您需要shift

df['response'] & df['confidence'].shift(1).fillna(True)

输出:

0     True
1     True
2     True
3     True
4     True
5     True
6    False
7     True
8     True
dtype: bool