私はこの間に私の頭を包み込み、解決策を見出そうとしています。データのクリーニング:現在の列の値を辞書にマップされている値に置き換えます。
私の質問は、基準が満たされた場合、列名に基づいて複数の列の現在の列値を変更する方法です。
私はパンダのcsvデータフレームとして読み込まれた調査データを持っている:
現在の列の値が等しい場合、私は、私は、各列にしたい列名を持つ辞書と値を作成しているimport pandas as pd
df = pd.read_csv("survey_data")
1.各列には、1またはNaNが含まれます。基本的に '_SA' = 5、 '_A' = 4、 '_NO' = 3、 '_D' = 2および '_SD'で終わるデータフレーム内の列は、現在の値1のままです。 'NaN'値そのまま残す。
op_dict = {
'op_dog_SA':5,
'op_dog_A':4,
'op_dog_NO':3,
'op_dog_D':2,
'op_dog_SD':1,
'op_cat_SA':5,
'op_cat_A':4,
'op_cat_NO':3,
'op_cat_D':2,
'op_cat_SD':1,
'op_fish_SA':5,
'op_fish_A':4,
'op_fish_NO':3,
'op_fish_D':2,
'op_fish__SD':1}
Iはまた、私はたいデータフレーム内の列のリストを作成した場合に変更される[op_cols]と呼ばれる現在の列の値= 1:この辞書です。今、私はそれらの列の値を反復処理し、辞書内のマッピングされた値が1に置き換えられ、このようなものを使用しようとしている:それは、エラーを吐き出していませんが、それは1を交換していない
for i in df[op_cols]:
if i == 1:
df[op_cols].apply(lambda x: op_dict.get(x,x))
df[op_cols]
値を辞書からの対応する値で置き換えます。それは、1
として、これは動作しないでしょうか、より効率的な方法は、大幅に私はあなたの質問を理解していればあなたは1で、カラム内のすべてのものを交換したいので
@tvashtarありがとう、これは完全に働いた、私は列名をループするとは思わなかった。これに関する助けを感謝します – da4l