The following code is a sample DataFrame. Now I need to have all the XYZ under Position to be multiplied by a rotation matrix, let's say 90deg around Z: [[1,0,0],[0,0,-1],[0,1,0]]
How to do this without using loops? Or as fewer loops as possible. Thanks in advance.
index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],
names=['year', 'Record'])
columns = pd.MultiIndex.from_product([['Point1', 'Point2'],['Position', 'Not-Important'], ['X', 'Y','Z']])
# mock some data
data = np.round(np.random.randn(4, 12), 1)
data[:, ::2] *= 10
data += 37
# create the DataFrame
hd = pd.DataFrame(data, index=index, columns=columns)
Point1 Point2
Position Not-Important Position Not-Important
X Y Z X Y Z X Y Z X Y Z
year Record
2013 1 26.0 38.1 42.0 35.0 37.0 37.2 35.0 36.9 28.0 37.2 58.0 37.0
2 42.0 36.4 36.0 36.5 43.0 35.4 28.0 36.3 60.0 35.5 41.0 37.3
2014 1 47.0 36.6 32.0 37.9 58.0 37.7 25.0 36.5 21.0 38.6 33.0 36.3
2 42.0 38.6 26.0 35.2 37.0 36.3 21.0 36.5 27.0 36.3 26.0 35.5
source https://stackoverflow.com/questions/73015035/in-a-multi-index-dataframe-how-to-perform-matrix-multiplication-for-a-subset-of
Comments
Post a Comment