переименование ряда столбцов в pandas dataframe (действительно новый для кодирования и добросердечного идиота) - PullRequest
0 голосов
/ 11 февраля 2019

Мне очень жаль, я уверен, что это глупый вопрос, и я потратил дни на то, чтобы прочесывать ответы здесь и на других ресурсах, но я слишком новичок в этом и должен научиться этому (давление со стороны PhD)

Я пытаюсь редактировать фрейм данных панд, который содержит ряд отдельных психологических измерений.на данный момент это выглядит так.

age   country    v_1    v_2    v_3   v_4    v_5     v_6   v_7
26    Ireland     2      3      1     5      3       2     1
30    Germany     3      5      5     1      3       4     1
44    Ireland     1      4      5     2      2       1     2 

Я хочу иметь возможность выбирать столбцы (т. Е. От v_1 до v_5) и иметь возможность переименовывать их, используя аббревиатуру, за которой следует число (которое увеличивается на 1 при каждом запуске).

поэтому, например, у меня короткая эмоциональная шкала (SES), которая имеет 5 элементов (от v_1 до v_5 в моем фрейме данных), и я хочу запустить фрагмент кода, который возвращает

age   country    SES1   SES2   SES3  SES4   SES5     v_6   v_7
26    Ireland     2      3      1     5      3       2     1
30    Germany     3      5      5     1      3       4     1
44    Ireland     1      4      5     2      2       1     2 

и в идеале я хотел бы иметь возможность запустить его снова для v_6 и т. Д. С новым сокращением.

Я попытался использовать что-то вроде:

for col in df[v_1:v_5]:
    abr = ' SES'
    1 = 0
    df.rename(columns = {col: + str(i)}, inplace = True) 

Опять яизвините, если это очевидно, или просто глупо, но любая помощь, которая не указывает мне на другой ответ на сайте (если я просто не пропустил один), действительно выручила бы парня.

1 Ответ

0 голосов
/ 11 февраля 2019

Вы довольно близки!

df.rename(columns={"v_%d"%i: "SES%d"%i for i in range(1,6)}, inplace=True)

Здесь мы используем словарное понимание, чтобы построить отображение от старых имен столбцов к новым.Вы также можете использовать цикл for для ясности, так как маловероятно, что в этом будет много производительности.

...