Более простой метод для замены нескольких столбцов одновременно? - PullRequest
0 голосов
/ 27 ноября 2018
import pandas as pd
w=pd.read_csv('w.csv')

Принимает разделы CSV, чтобы добавить их.Два столбца требуют числового преобразования

w["Social Media Use Score"]=w.iloc[:,[6,7,8,9,10,11,12,13,14,15,16]].sum(axis=1)

Переключает Да или Нет в этом разделе на 1 o 0 и добавляет их, остальные разделы переключают ABCD на 1234 и суммы

  w['Q1'],w['Q3'],w['Q6'] = w['Q1'].map({'No': 1, 'Yes': 0}),\
    w['Q3'].map({'No': 1, 'Yes': 0}),\
    w['Q6'].map({'No': 1, 'Yes': 0})
    w['Q2'],w['Q4'],w['Q5'],w['Q7'],w['Q8'],w['Q9'],w['Q10']=\
    w['Q2'].map({'Yes': 1, 'No': 0}),\
    w['Q4'].map({'Yes': 1, 'No': 0}),\
    w['Q5'].map({'Yes': 1, 'No': 0}),\
    w['Q7'].map({'Yes': 1, 'No': 0}),\
    w['Q8'].map({'Yes': 1, 'No': 0}),\
    w['Q9'].map({'Yes': 1, 'No': 0}),\
    w['Q10'].map({'Yes': 1, 'No': 0})
    w["Anxiety Score"]=w.iloc[:,[17,18,19,20,21,22,23,24,25,26]].sum(axis=1) 


w['d1'],w['d2'],w['d3'],w['d4'],w['d5'],w['d6'],w['d7'],w['d8'],w['d9'],w['d10']=\
            w['d1'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d2'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d3'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d4'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d5'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d6'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d7'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d8'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d9'].map({'A': 1, 'B': 2,'C':3,'D':4}),\
            w['d10'].map({'A': 1, 'B': 2,'C':3,'D':4})
            w['Depression Score']=w.iloc[:,[27,28,29,30,31,32,33,34,35,36]].sum(axis=1)
            w.to_csv("foranal.csv")

1 Ответ

0 голосов
/ 27 ноября 2018

Если вы хотите выполнить замену для нескольких столбцов одновременно, вы должны использовать df.replace (это медленнее, чем map, поэтому используйте его, только если вы можете себе это позволить).

# Mapping for replacement.
repl_dict = {'A':1, 'B':2,'C':3, 'D':4}
repl_dict.update({'Yes':1, 'No':0})
# Generate the list of columns to perform replace on.
cols = [f'{x}{y}' for x in ('Q','d') for y in range(1, 11)]
w[cols] = w[cols].replace(repl_dict)
# Fix values for special columns.
w.loc[:, ['Q1', 'Q3', 'Q6']] = 1 - w.loc[:, ['Q1', 'Q3', 'Q6']]

«Оценка использования социальных сетей» и «Оценка тревоги» - это хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...