【发布时间】:2016-11-21 16:44:57
【问题描述】:
我有一个这样的数据框:
import pandas as pd
df = pd.DataFrame({'A_1': [1, 2], 'A_2': [3, 4], 'A_3': [5, 6], 'A_4': [7, 8],
'B_1': [0, 2], 'B_2': [4, 4], 'B_3': [9, 6], 'B_4': [5, 8]})
A_1 A_2 A_3 A_4 B_1 B_2 B_3 B_4
0 1 3 5 7 0 4 9 5
1 2 4 6 8 2 4 6 8
我想将其转换为如下所示的数据框:
A_G1 A_G2 B_G1 B_G2
0 2 6 2 7
1 3 7 3 7
因此,A_G1 是列 A_1 和 A_2 的 mean,A_G2 是列 A_3 和 A_4 的 mean;这同样适用于B_G1 和B_G2。所以我想做的是计算两个连续列的平均值并将结果作为新列添加到数据框中。
一个简单的实现可能如下所示:
res_df = pd.DataFrame()
for i in range(0, len(df.columns), 2):
temp_df = df[[i, i + 1]].mean(axis=1)
res_df = pd.concat([res_df, temp_df], axis=1)
这给了我想要的输出(除了列名):
0 0 0 0
0 2 6 2 7
1 3 7 3 7
有没有更好的方法,即矢量化方式?
【问题讨论】:
标签: python performance pandas optimization vectorization