私は管理していますが、最終的な結果が得られますが、これを行うにはより効率的な方法が必要です。より効率的なルート
私は20のカテゴリに関する意見データを100列持っています。健康やJOB上記画像で
20種類の2です。候補者は、各カテゴリーの個人的重要性をランク付けするよう求められます。強く反対(1)、反対(2)、意見なし(3)、同意(4)または強く同意する(5)のいずれか。
私がしたいのは、カテゴリごとに新しい列を作成し、値を積み重ねることで、5列にわたって広がるのではなく候補の回答がある列があるからです。どの候補者もあるカテゴリに対して2つの回答を与えていないことは予め決められている。上の写真の緑色の列は、望ましい結果を示しています。
データはパンダを使用して読んでcsvファイルである:ここで
は、私が撮影した非効率的なルートです。
私は、とても20のリスト各カテゴリのリストを作成しました:私は、以下のコードを使用して、関連リストの列から最大値をとるデータフレームに20個の新しい列を作成し
df.columns
health = list([col for col in df.columns if 'HEALTH' in col])
job = list([col for col in df.columns if 'JOB' in col])
を。
df['HEALTH'] = df[health].max(axis=1)
df['JOB'] = df[job].max(axis=1)
最後のステップでは、100個の元の列を削除して、すべての候補の回答が積み重なった20個の新しい列を作成します。
これは、元の意見の列のリストを使用して、以下のコードを使用して行った:
df.drop(df[op_cols], axis=1, inplace=True)
df.info()
私は自分自身がこれらの手順をより効率的にする方法について何かアドバイス/提案をいただければ幸いですので、2.7をPythonの教えています。
;リスト内包は 'list'を生成し、' list'コンストラクタはその 'list'を受け取り、それをコピーして新しい' list'を返し、元の 'list'は破壊されます。両方のlistcompsの 'list()'を削除し、Pythonが 'list'を1回だけ直接構築させるようにしてください。 – ShadowRanger