Код: Выделить всё
result = 2*apple - melon - orange
Мой 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