好的,问题是是否有一种快速的方法来对PANDA或NumPy进行XOR运算,并用结果更新下一行.
基本上,我有一个名为‘ss’的Pandas 数据框,如下所示:
rst no1 no2 no3 no4 no5 no6 no7
0 1 6 2 15 14 9 5 1
1 11 0 0 0 0 0 0 0
2 9 0 0 0 0 0 0 0
3 11 0 0 0 0 0 0 0
4 3 0 0 0 0 0 0 0
5 15 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
Use: ss = pd.read_clipboard()
to copy paste the dataframe into a variable use the above command
我想做的是用下一个‘rst’列中的XOR来更新每个‘no’列,使其中的每个no行都等于ss.loc[1:,[‘no1’,‘no2’,‘etc’])=[ss.loc[1,(‘rst’)]^ss.loc[0,[0,[‘no1’,‘no2’,‘etc’])或类似的内容,因此第一步将创建如下所示的数据帧:
rst no1 no2 no3 no4 no5 no6 no7
0 1 6 2 15 14 9 5 1
1 11 13 9 4 5 2 14 10
2 9 0 0 0 0 0 0 0
3 11 0 0 0 0 0 0 0
4 3 0 0 0 0 0 0 0
5 15 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
which is basically ss.loc[1, ('rst')] which is 11 so 11 ^ np.array([ 6, 2, 15, 14, 9, 5, 1]) which the result is np.array([13, 9, 4, 5, 2, 14, 10]) which then I set to each no column in sequence as you can see above.
and the next step is to take ss.loc[2, ('rst')] which is 9 and do the next sequence:
rst no1 no2 no3 no4 no5 no6 no7
0 1 6 2 15 14 9 5 1
1 11 13 9 4 5 2 14 10
2 9 4 0 13 12 11 7 3
3 11 0 0 0 0 0 0 0
4 3 0 0 0 0 0 0 0
5 15 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
所以9^np.array([13,9,4,5,2,14,10])的结果是 Np.array([4,0,13,12,11,7,3]),然后我将其按顺序设置在每个no列中,如上所述.
我的问题是,我如何以快速/快速的方式对NumPy或Pandy执行此操作,以及我是否可以在不使用任何循环的情况下完成此操作,因为我正在处理的数据集有一百万个,而循环速度很慢,所以我希望有一种快捷或更好的方法,将每个‘no*’列的下一个‘rst’行的XOR设置为与‘rst’列相同行中的相应‘no’列.