Как оценить формулу, основанную на разных значениях одного столбца в Python DataFramePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как оценить формулу, основанную на разных значениях одного столбца в Python DataFrame

Сообщение Anonymous »

У меня есть DataFrame, и я хочу оценить такую ​​формулу, как

Код: Выделить всё

result = 2*apple - melon - orange
и группа по testid.
Мой df похож на ниже
df = pd.DataFrame({'testid':(1,2,1,2,1,2),'Name':('apple','apple','melon','melon','orange','orange'), 'A': (1,2,10,20,5,5), 'B': (1,5,4,2,3,1)})
< /code>




testId < /th>
< /th> name < /th>
< /th>
b < /th> < /th> < /br /> < /br /th> < /br /> < /br /th>
< /tr>
< /tr>
< /tr> /> < /thead>


1 < /td>
Apple < /td>
1 < /td>
1 < /td>
< /tr>

2 2 . /> Apple < /td>
2 < /td>
5 < /td>
< /tr>

1 < /td>
melon < /td>
10 < /td>

< /td>
10

< /td>
10 /> < /tr>

2 < /td>
melon < /td>
20 < /td>
2 < /td>
< /tr>

1


1


1
< /tr>
/> 5 < /td>
3 < /td>
< /tr>

2 < /td>
Orange < /td>
5 < /td>
1 < /td>
< /td> /> < /table>
< /div>
И я хочу, чтобы мой результат, как для каждого столбца A и B Testid, Do Apple * 2 - Melon - Orange < /code>. и затем сохранить в новом столбце Result_a и result_b, группа по testid < /p>




testid < /th>
< /th> result_a < /th>
< /br /brest_. /> < /tr>
< /thead>


1 < /td>
-13 < /td>
-5 < /td>
< /tr>

2 /> -21 < /td>
7 < /td>
< /tr>
< /tbody>
< /table>
< /div>
Какая функция может получить этот результат?eq = 'df[df.Name==\'apple\',[\'A\',\'B\']] *2 - df[df.Name==\'melon\',[\'A\',\'B\']] - df[df.Name==\'orange\',[\'A\',\'B\']]'
df.eval(eq)
< /code>
Но это говорит мне < /p>
UndefinedVariableError: name 'df' is not defined
< /code>
Я понял, что должен использовать Pd.eval (Engine = 'python') вместо df.eval ()
, и теперь проблема заключается в том, что различное подмножество DF возвращает различный индекс, что их результат не может добавить или минус < /p>
df[df.Name=='apple'][['A','B']]*2
< /code>
Это дает мне < /p>




< /th>
< /br />
< /th> < /br /th> < /br /th> < /br /th> < /br /th> /> < /thead>


0 < /td>
2 < /td>
2 < /td>
< /tr>

1 < /td>
4 4 4 4 4 4 4 4 4 4 4 /> 10 < /td>
< /tr>
< /tbody>
< /table>
< /div>
Однако < /p>
df[df.Name=='melon'][['A','B']]
< /code>
Это дает мне < /p>




< /th>
< /br />
< /th> < /br /th> < /br /th> < /br /th> < /br /th> /> < /thead>


2 < /td>
10 < /td>
4 < /td>
< /tr>

3 < /td>
20 20 20 20 20 20 20 20 20 . /> 2 < /td>
< /tr>
< /tbody>
< /table>
< /div>
, поэтому они не могут добавить или минус, потому что индекс не совпадает < /p>

Подробнее здесь: https://stackoverflow.com/questions/728 ... ython-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»