我有一个向量计算,它从数组中获取一个值,以及该数组下面的值。它检查上面的值是否为1,下面的值是否为0。如果是这种情况,使用np.,其中我将为true分配1,为false分配0。我似乎得到的错误是:“无法将输入数组从形状(6,)广播到形状(5,)”。
import pandas as pd
import numpy as np
data = {
'A': [0, 0, 1, 0, 0, 0],
'B': [0,0,0,0,0,0]
}
df = pd.DataFrame(data)
x=1
df.iloc[0:5,1]=np.where((df.iloc[0:5,0]==1) & (df.iloc[1:6,0]==0),x,0)
每个df.iloc
的大小相同,最后一行只是一个虚拟行,以允许df.iloc[1:6,0]
工作。
同样,当运行布尔值时,我得到:
(df.iloc[0:5,0]==1) & (df.iloc[1:6,0]==0)
Out[43]:
0 False
1 False
2 False
3 False
4 False
5 False
但值2应该为真。我也试过让x成为一个数组,但似乎不起作用,任何帮助都将不胜感激!
1条答案
按热度按时间sg24os4d1#
具体的逻辑还不清楚,但你需要使用
shift
:如果你想将
True
Map到1
,并将False
Map到0
,不需要np.where
,只需使用m.astype(int)
。输出量: