使用 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')
我试图用字符串替换特定范围内的值,但 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')