使用 where (pandas) 时,范围选择无法按预期工作

range selection not working as expected with where (pandas)

我试图用字符串替换特定范围内的值,但 where 命令没有按预期工作。 7 到 14 之间的值应重新编码为 'week1'.

df = pd.DataFrame({'a': [1,6,8,10,8], 'b': [9,10,19,18,0]})

pd.DataFrame(df.where((df <=7) & (df >=14 ), 'week1'))

这将给出以下输出

    a   b
0   week1   week1
1   week1   week1
2   week1   week1
3   week1   week1
4   week1   week1

尽管预期输出是

    a   b
0   1   week1
1   6   week1
2   week1   19
3   week1   18
4   week1   0

问题是你的不等式被交换了。没有小于7和大于14的数字。

编辑:where 也是 mask 的倒数。要使用 where,您只需将 & 替换为 |,因为您指定条目 not 将替换为 week1.

df.where((df < 7) | (df > 14 ), 'week1')