Разница в процентах Python в Excel - PullRequest
0 голосов
/ 07 октября 2019

У меня есть вопрос по программе Python. Я хотел бы рассчитать процентную разницу и сохранить в другом столбце. Итак, таблица выглядит следующим образом:

Name  | Country1 | Country2 | Percentage Difference
Food1 | 3.07     | 2.36     | Value1
Food2 | 2.40     | 2.55     | Value2

Поэтому, когда пользователь вводит значения, значения будут проходить через функцию, возвращающую значение3. Затем предполагается, что значение3 будет вставлено в размещение значения1 (на основе таблицы).

import pandas as pd
df = pd.read_csv('Food.csv')

value1 = float(sys.argv[1]) #User input 
value2 = float(sys.argv[2]) #User input

def test(): #function to calculate the formula
    value3 = float(
        (abs(value1 - value2) / ((value1 + value2)/2)*100)) #Formula to calculate difference
    value3 = round(value3,2) #Round up 2 decimal numbers
    return value3

Поэтому мне было интересно, как я могу решить его, не вводя местоположение столбца и строк?

1 Ответ

1 голос
/ 07 октября 2019

Я не уверен, зачем вам нужен пользовательский ввод. Похоже, вы просто хотите вычислить все строки.

Поскольку вы уже используете панд, это довольно простая задача.

df['Percentage Difference'] = ((df['Country1'] - df['Country2']).abs() / 
                              ((df['Country1'] + df['Country2'] / 2) * 100)).round(2)

Имейте в виду, что значения в вашем примере слишком малы для получения значимого результата при округлении до 2 десятичных знаков.

df = pd.DataFrame({'Country1': [3.07, 2.40], 'Country2': [2.36, 2.55]})

df['Percentage Difference'] = ((df['Country1'] - df['Country2']).abs() /
                               ((df['Country1'] + df['Country2'] / 2) * 100))
df['rounded'] = df['Percentage Difference'].round(2)
print(df)

Выходы

   Country1  Country2  Percentage Difference  rounded
0      3.07      2.36                  0.002      0.0
1      2.40      2.55                  0.000      0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...