我很难比较两个连续的行形成不同的列,两列都有布尔值。我需要创建一个名为" 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行我不知道这里有什么问题,我不确定它是否是索引问题。
谢谢!
答案 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