pandas - добавить новые вычисляемые столбцы с циклом for

1

У меня есть кадр данных со многими столбцами, которые мне нужно разделить на столбец для вычисления пропорций. Может ли кто-нибудь помочь с циклом for для этого? В приведенном ниже примере данных я хочу добавить столбцы c1p = c1/ct, c2p=c2/ct, c3p=c3/ct, c4p=c4/ct.

id   c1   c2   c3   c4   ct
1    6    8    8    12    34
2    5    3    11   6     25 
3    3    9    6    12    30
4    14   10   10   3     37
  • 0
    Почему вы хотите for петли для этого? Просто сделайте ссылку на столбцы данных и разделите их, чтобы получить векторизованный подход. Это толкает расчет в ноль и, вероятно, будет на несколько порядков быстрее.
  • 0
    Я довольно новичок в программировании, не могли бы вы привести пример того, как это сделать с приведенными выше примерами данных? Мне нужно сделать это для 80 столбцов, поэтому не хотел создавать отдельные столбцы.
Теги:
for-loop
loops

2 ответа

0

Вот векторный подход для получения еще одного df_p который содержит все df_p значения единицы измерения:

df_p = df.filter(regex='c[0-9]').divide(df['ct'], axis=0)
  • 0
    не работает для меня , мои настоящие имена столбцов не c1, c2 ... (это случайные названия компаний). Спасибо
  • 0
    @ pushpraj-verma Хорошо. Пожалуйста, предоставьте больше информации, то есть названия столбцов, для получения дополнительной помощи.
0

Сила DataFrames заключается в том, что вы можете создавать столбцы по столбцам. Как это:

for i in range(1, 5):
    df[f'c{i}p'] = df[f'[c{i}'] / df['ct']
  • 0
    Спасибо за это, Стив, мои фактические данные не имеют имен как c {i}. Есть ли способ использовать индекс столбца или что-то еще. Мне нужно сделать это для 80 столбцов, поэтому не хотел создавать отдельные столбцы.
  • 0
    @PushprajVerma Если вы можете создать шаблон, который соответствует всем именам, вы можете циклически перемещаться по df.columns и выполнять деление только на столбцы, которые соответствуют этому шаблону. Дайте мне знать, если я смогу помочь вам сделать это =)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню