2016-03-21 18 views
0

Şimdi bir süredir başımı sarmaya çalışıyorum ve henüz bir çözüm bulmamaya başladım.Temizleme Verileri: Mevcut Sütun Değerlerini Sözlükle Eşleştirilen Değerlerle Değiştirme

Sorunuz, ölçüt karşılanırsa sütun sütununa göre birden çok sütunta geçerli sütun değerlerini nasıl değiştirebilirim ???

Bir panda CSV dataframe olarak okundu anket verilerine sahip:

mevcut sütun değeri eşitse ben her sütunda istediğiniz sütun adları ile bir sözlük ve değerlerini yarattık
import pandas as pd 
df = pd.read_csv("survey_data") 

1. Her sütun 1 veya NaN içerir. Temelde '_SA' = 5, '_A' = 4, '_NO' = 3, '_D' = 2 ve '_SD' ile biten veri çerçevesindeki herhangi bir sütun, geçerli değer 1 olarak kalır. 'NaN' değerlerinin tümü olduğu gibi kal.

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} 

Ayrıca istediğim veri çerçevesi içinde bir sütun listesini yarattığı varsa değiştirilecek [op_cols] adı verilen mevcut sütun değeri = 1: Bu sözlük. Şimdi bu sütunlardaki değerlerin arasında dolaşır ve sözlükte eşleştirilmiş değeri ile 1 değiştirir böyle bir şey kullanmaya çalışıyorlar: Bir hata olduğunu tükürme değil ama 1 yerini almıyor

for i in df[op_cols]: 
    if i == 1: 
     df[op_cols].apply(lambda x: op_dict.get(x,x)) 

df[op_cols] 

sözlükten karşılık gelen değer ile değerler. Bu, herhangi bir tavsiye/bu işe yaramaz ya daha verimli bir yol olacağını neden telkin büyük

cevap

0

Sorunuzu anlıyorum Yani eğer 1 kişiyle birlikte sütundaki tüm olanları değiştirmek istiyor takdir

1. olarak kalır Sütun ismine göre 2,3,4,5?

Ben yapmanız gereken tüm değerle liste ve çoklu aracılığıyla dict döner yinelemek olduğunu düşünüyorum: Bu tarif yapar ve çok daha hızlı her değer yerine daha

for col in op_cols: 
    df[col] = df[col]*op_dict[col] 

. NaN'ler hala NaN'ler olacak, siz de isterseniz, dolgudakilerle olanları idare edebilirsiniz.

+0

Teşekkür ederim @tvashtar bu mükemmel çalıştı, sütun isimleri ile döngü düşünmedim. Bu konuda yardım için teşekkür ederiz – da4l

İlgili konular