Операции с разными частями одного и того же кадра данных - PullRequest
0 голосов
/ 17 мая 2018

Предположим, что существует фрейм данных:

    kind  value
0      1      1
1      1      2
2      1      3
3      1      4
4      1      5
5      2      6
6      2      7
7      2      8
8      2      9
9      2      10

Мы можем сделать что-то с отфильтрованной частью фрейма данных:

df.loc[df['kind']==1, 'value'] = df.loc[df['kind']==1, 'value'] * 2

Как выполнить вычисления, включающие две или более частейодин и тот же кадр данных, предполагая, что их размер равен?Примерно так:

df.loc[df['kind']==1, 'value'] = 
    df.loc[df['kind']==1, 'value'] * df.loc[df['kind']==2, 'value']

(это не работает)

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Использование:

m = df['kind']==1
df.loc[m, 'value'] = df.loc[m, 'value'].values * df.loc[df['kind']==2, 'value'].values
print (df)
   kind  value
0     1      6
1     1     14
2     1     24
3     1     36
4     1     50
5     2      6
6     2      7
7     2      8
8     2      9
9     2     10
0 голосов
/ 17 мая 2018

Попробуйте это:

In [107]: df.loc[df['kind']==1, 'value'] *= df.loc[df['kind']==2, 'value'].values

In [108]: df
Out[108]:
   kind  value
0     1      6
1     1     14
2     1     24
3     1     36
4     1     50
5     2      6
6     2      7
7     2      8
8     2      9
9     2     10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...