Понимание списка, показывающего числа в странном формате

#python #pandas #dataframe #list-comprehension

#питон #панды #фрейм данных #список-понимание

Вопрос:

У меня есть фрейм данных панд, подобный этому:

Операция Сумма Транзакции
Пополнить 10.00
Дивиденд 0.9
Налоги 0.04

И я применяю такое понимание списка, как это:

 df['Tax'] = ['0' if i == "Deposit" or i == "Dividend" else df['Transaction Amount'] for i in df['Transaction']]   df['Net Amount'] = [df['Transaction Amount'] if i == "Deposit" or i == "Dividend" else -1 * df['Tax'] for i in df['Transaction']]  

Однако для обоих я получаю странный вывод, подобный этому: «0 1.00 1 1000.00 2 1000.00 3…»

Сумма транзакции-это float64, я попытался сделать ее строкой, чтобы посмотреть, решит ли это проблему, но я продолжаю получать то же самое.

Комментарии:

1. Не могли бы вы предоставить фрейм данных, содержащий ожидаемый результат?

2. Чувак, » 0 » — это строка.

Ответ №1:

Попробуйте сделать это, используя np.where вместо понимания списка.

 import numpy as np df['Tax'] = np.where(df['Transaction'].isin(['Deposit', 'Dividend']),  0 ,df['Transaction Amount'])  df['Net Amount'] = np.where(df['Transaction'].isin(['Deposit', 'Dividend']),   df['Transaction Amount'], -1*df['Tax'])  

Выход:

 Transaction Transaction Amount Tax Net Amount 0 Deposit 10.00 0.00 10.00 1 Dividend 0.90 0.00 0.90 2 Taxes 0.04 0.04 -0.04