好的,我有这个 Dataframe ,你注意到了,我用了一个4的切片
In [13147]: solve[::4]
Out[13147]:
rst dr
0 1 0
4 3 0
8 7 0
12 5 0
16 14 0
20 12 0
24 4 0
28 4 0
32 4 0
36 3 0
40 3 0
44 5 0
48 5 0
52 13 0
56 3 0
60 1 0
我想要的是在列'rst'中xor 1乘3并得到2(1^3=2).然后我想做3^7 = 4,我想把它们放在dr. so solve.loc[0:,('dr ')] = 2,and solve.loc[4:,('dr')] = 4.我目前的方法很繁琐,不是自动的,这是我正在做的:
In [13150]: np.array(solve.loc[::4, ('rst')]) ^ np.array(solve.loc[4::4, ('rst')])
ValueError: operands could not be broadcast together with shapes (16,) (15,)
解决方法是:
In [13159]: wutwut = np.array(solve.loc[::4, ('rst')])[:15] ^ np.array(solve.loc[4::4, ('rst')])
Out[13159]:
array([ 2, 4, 2, 11, 2, 8, 0, 0, 7, 0, 6, 0, 8, 14, 2],
dtype=int8)
然后将值放回solv.loc ['dr']是一个问题,因为我必须手动输入长度,如:
solve.loc[:56:4, ('dr')] = wutwut
我看到我必须手动设置长度,有没有更自动的方法
正如你所看到的,这是乏味的,不实用的,因为我正在使用不同的和不断变化的长度,我需要一个更自动化的最佳实践演员。我正在寻找一些建议,并提前感谢。此外,我有更高级的用例,其中列之间的xor,所以如果有人有策略,它将帮助我的道路以及
1条答案
按热度按时间zmeyuzjn1#
让我们使用loc进行索引和自动赋值