#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 |