我在pandas数据框中有两种类型的列,比如A和B。
如何有效地使用每种类型列的平均值分别规范化每行中的值?
我可以先计算每个列类型的平均值,然后将每个列除以其各自的列类型平均值,但这需要太多的时间(超过30分钟)。
df = pd.DataFrame({'A1': [1,2,3],
'A2': [4,5,6],
'A3': [7,8,9],
'B1': [11,12,13],
'B2': [14,15,16],
'B3': [17,18,19]
})
df['A_mean'] = df.apply(lambda x: x.filter(regex='A').mean(), axis=1)
df['A1'] = df['A1']/df['A_mean']
我期待以下结果。
3条答案
按热度按时间bpsygsoo1#
下面是一种方法来完成您的问题(注意,我使用了
startswith
而不是filter
,但如果需要,可以调整通用性):输出:
ars1skjm2#
我只是在chatGPT中复制粘贴了同样的问题,并进行了微小的修改,它给出了一个很好的答案。
qlckcl4x3#
运行groupby并在assign函数中解包 Dataframe :