私がどのように見えるデータフレームがあります。条件付き集約パンダDATAFRAME
import pandas as pd
df = pd.DataFrame([[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
[9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0],
[17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0]],
columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])
A B C D E F G H
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0
1 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
2 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0
そして、私は列のリストを持っている:私のリストの各要素について
l = ['A', 'C', 'D', 'E']
を、私は平均値を取得したいですそれより前のデータフレーム列にはそれ自身の列の値の2倍を加えたものです。だから、A
だけ自体に依存し、C
はA
に依存しており、それ自体、D
は、A
の合計に依存C
、それ自体、およびE
はA
、C
、D
、それ自体に依存しますしますします。私は次のように必要なものを達成しています
for i, col in enumerate(l):
other_cols = l[:i]
df['tmp_' + col] = df[other_cols].mean(axis=1) + 2.0 * df[col]
A B C D E F G H tmp_A tmp_C tmp_D \
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 NaN 7.0 10.0
1 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 NaN 31.0 34.0
2 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 NaN 55.0 58.0
tmp_E
0 12.666667
1 36.666667
2 60.666667
むしろためのループを介して実行するよりも、同じことを達成するために、よりPython的な方法があった場合、私は不思議でしたか?
それは 'sum'か' mean'ですか?あなたの質問では、あなたのコードの列の合計がそれは意味ですか?また、なぜtmp_AはNaNですか? – Psidom
はい、それは意味するべきです – slaw
私は 'tmp_A'が' df ["A"] 'の2回であるが、あなたのコードはNaNを生成するとあなたのテキストから推測しました。ちょうど明確にするために、それはあなたが欲しいものですか? – DSM