Умножьте только положительные значения в столбце на 100

#python #pandas #multiplication

#python #панды #умножение

Вопрос:

Любые значения, большие 0, следует умножить на 100.

Пример набора данных:

 df = pd.DataFrame({'col1': ['A','B','C'], 'col2':[-0.42,0.091,0.0023], 'col3': [30, 10,20]})

   col1     col2   col3
0     A    -0.42     30
1     B    0.091     10
2     C   0.0023     20
 

Ожидаемый результат для col2 будет выглядеть следующим образом:

    col1     col2   col3
0     A    -0.42     30
1     B      9.1     10
2     C     0.23     20
 

Не уверен, как решить эту проблему, если кто-нибудь может предоставить кодирование или рекомендации с использованием python / pandas

Ответ №1:

Используйте loc индексацию:

 df.loc[df['col2'] > 0, 'col2'] *= 100
print(df)

# Output:
  col1  col2  col3
0    A -0.42    30
1    B  9.10    10
2    C  0.23    20
 

Ответ №2:

Вы можете использовать np.where() , чтобы выбрать 1 для каждого значения, если оно меньше 0, и 100 для значений, больших 0, и умножить столбец на результирующий массив:

 df['col2'] *= np.where(df['col2'] > 0, 100, 1)
 

Вывод:

 >>> df
  col1  col2  col3
0    A -0.42    30
1    B  9.10    10
2    C  0.23    20
 

Ответ №3:

Вы можете сделать так:

 df['col2'] = [row['col2'] if row['col2']<0 else row['col2']*100 for i,row in df.iterrows()]