#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()]