私はかなりのサイズ (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 の減算を含みます。