Python - Конвертация данных в Dataframe - PullRequest
0 голосов
/ 13 марта 2020

У меня есть фрейм данных, который я создал путем объединения двух фреймов данных, которые выглядят следующим образом:

Salary Amount:    Salary Currency:   Country Origin:    Exchange Rate: 
 55000.0           EUR                 EUR               1.195826
 200000.0          USD                 USD               1.000000
 130000.0          GBP                 GBP               1.324188

В фрейме данных намного больше валют, это только пример. Я хочу умножить сумму зарплаты на обменный курс GBP, чтобы получить Briti sh Pounds (GBP) для каждой строки во фрейме данных. Я также хочу распечатать максимальную и среднюю зарплату в фунтах стерлингов. Я предполагаю, что мне нужно умножить сумму зарплаты с обменным курсом, но я не уверен. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 13 марта 2020

Итак, если вы хотите умножить все 3 строки на «обменный курс» в 3-й строке (GBP) - вы можете попробовать это:

df = pd.DataFrame([[55000.0,'EUR','EUR',1.195826],
                   [200000.0,'USD','USD',1.000000],
                   [130000.0,'GBP','GBP',1.324188]],
                  columns=['Salary Amount:','Salary Currency:','Country Origin:','Exchange Rate:'])

# get the GBP exchange rate in the variable exchange_rate_GBP 
exchange_rate_GBP = df[df['Salary Currency:']=='GBP']['Exchange Rate:'].values

# create a new column and multiply the `Salary Amount:` column value with the `exchange_rate_GBP` value
df['converted'] = df['Salary Amount:']*exchange_rate_GBP
print(df)

Вывод:

   Salary Amount: Salary Currency: Country Origin:  Exchange Rate:  converted
0         55000.0              EUR             EUR        1.195826   72830.34
1        200000.0              USD             USD        1.000000  264837.60
2        130000.0              GBP             GBP        1.324188  172144.44

Если вы не хотите конвертировать 3-ю строку, которая уже есть в фунтах стерлингов, вы можете использовать np.where() и игнорировать эту строку

df['converted'] = np.where(df['Salary Currency:']!='GBP', 
                           df['Salary Amount:']*exchange_rate_GBP, 
                           df['Salary Amount:'])

Вывод: (3-я строка в фунтах стерлингов не преобразуется)

   Salary Amount: Salary Currency: Country Origin:  Exchange Rate:  converted
0         55000.0              EUR             EUR        1.195826   72830.34
1        200000.0              USD             USD        1.000000  264837.60
2        130000.0              GBP             GBP        1.324188  130000.00

Чтобы получить среднее и максимальное значение:

print("Mean: ", df['converted'].mean())
print("Max: ", df['converted'].max())

Вывод:

Mean:  169937.46
Max:  264837.6
...