我使用大尺寸(48K 行,多达数十列)的 DataFrame。在他们操作的某个时刻,我需要对列值进行成对减法,我想知道是否有比我正在做的更有效的方法(见下文)。
我当前的代码:
# Matrix is the pandas DataFrame containing all the data
comparison_df = pandas.DataFrame(index=matrix.index)
combinations = itertools.product(group1, group2)
for observed, reference in combinations:
observed_data = matrix[observed]
reference_data = matrix[reference]
comparison = observed_data - reference_data
name = observed + "_" + reference
comparison_df[name] = comparison
由于数据可能很大(我也在置换测试期间使用这段代码),我很想知道它是否可以优化一下。
编辑:根据要求,这是一个典型数据集的样本
ID A1 A2 A3 B1 B2 B3
Ku8QhfS0n_hIOABXuE 6.343 6.304 6.410 6.287 6.403 6.279
fqPEquJRRlSVSfL.8A 6.752 6.681 6.680 6.677 6.525 6.739
ckiehnugOno9d7vf1Q 6.297 6.248 6.524 6.382 6.316 6.453
x57Vw5B5Fbt5JUnQkI 6.268 6.451 6.379 6.371 6.458 6.333
一个典型的结果是,如果 "A" 组是group1
和 "B" group2
,对于每个 ID 行,对于每一列都有对应于上面生成的配对的对(例如,A1_B1、A2_B1、A3_B1...),包含每个行 ID 的减法。