Питон - Панда Хитрая сумма столбцов - PullRequest
0 голосов
/ 25 октября 2018

Это сложный вопрос, у меня есть такой фрейм данных, и я хочу создать 3 столбца с условными суммами, такими как

  1. Если id = A, то A = A1 и B и C= B1
  2. Если id = B, то B = B1 и A и C = A1

Пример данных:

id A1  B1   A   B   C
A   5   4   5   4   4
B   6   1   6   1   6
A   7   2   7   2   2
B   6   8   8   6   6
C   2   1   2   1   0

Я пытаюсь прийтис общим решением, поэтому мне не нужно много суммы по оси.

1 Ответ

0 голосов
/ 25 октября 2018

Ваше состояние может быть уменьшено до:

  • , если id == A, тогда столбец A = столбец A1, столбец C = столбец B1
  • , если id == B, тогдастолбец B = столбец B1, столбец C = столбец A1

Таким образом, он переносится в код панд как:

df = pd.DataFrame([[5,4],[6,1],[7,2],[6,8],[2,1]], index=['A', 'B', 'A', 'B', 'C'], columns=['A1', 'B1'])


df['A'] = df['A1']
df['B'] = df['B1']
df['C'] = (df.index == 'B')*df['A1'] +(df.index == 'A')*df['B1']
# or faster method from @user3483203 
# df['id'] = df.index
# df['C'] = np.select([df.id.eq('A'), df.id.eq('B')], [df.B1, df.A1], 0)

# >>> df
#    A1  B1  A  B  C
# A   5   4  5  4  4
# B   6   1  6  1  6
# A   7   2  7  2  2
# B   6   8  6  8  6
# C   2   1  2  1  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...