назначьте имена столбцов в панд из цикла pd.series an

#python #pandas #dataframe

Вопрос:

Позвольте сказать, что мой df:

 A User1 User2
1 0       0
2 1       1
3 1       0
 

И я хочу создать еще один столбец в фрейме данных, который был суммой столбца плюс user1 user
Так что все просто: df['sum_result_Newcolum'] = df['user1'] df['user2'] .
Итак, это выглядит так:

  A User1 User2   sum_result_Newcolum
    1 0       0   0
    2 1       1   2
    3 1       0   1
 

Но у меня есть panda.серия выглядит так:

     0
0   AC.IR
1   AC.PO
2   B.0
3   B.1
 

конец и т. Д.
Поэтому я хочу for , чтобы инструкция create там проходила через pd.series и добавляла значение к имени столбца. Так что в этом вопросе я пытаюсь сделать что-то подобное без какого-либо успеха:

 df['sum_result_'  {cv_details.get(0)}]=df['user1'] df['user2']
df['sum_result_'  cv_details.get(0)]=df['user1'] df['user2']
df['sum_result_'  cv_details[0]]=df['user1'] df['user2']
df['sum_result_'  cv_details.iloc[0]]=df['user1'] df['user2']
 

Лучший результат за все время-имя столбца: «sum_result_Action…»

Может быть, решение преобразовать pd.серию в кадр?

Комментарии:

1. каков ваш ожидаемый результат ?

Ответ №1:

  • не на 100% ясно, каков ваш ожидаемый результат.
  • Если вам нужен новый столбец для каждого значения в вашей серии
    • назначение **кварги могут быть построены как понимание диктанта
    • из вашего примера кода вы определили пользователя статического вычисления1 Пользователь2
 import io
import pandas as pd

df = pd.read_csv(io.StringIO("""A User1 User2
1 0       0
2 1       1
3 1       0"""), sep="s ")

cv_details = pd.Series(['AC.IR', 'AC.PO', 'B.0', 'B.1'])

df.assign(**{f"sum_result_{v}":df["User1"] df["User2"] for v in cv_details})

 
A Пользователь1 Пользователь2 sum_result_AC.IR sum_result_AC.PO сумма_результат_в.0 сумма_результат_в.1
0 1 0 0 0 0 0 0
1 2 1 1 2 2 2 2
2 3 1 0 1 1 1 1