Цель состоит в том, чтобы умножить число coefic в столбце, но только для совпадений, использующих строку, содержащую или соответствие регулярному выражению.
Поэтому я хочу умножить только имя, содержащее «Техас», и сохранить другие значения без изменений.
Данные:
df = pd.DataFrame({"Name":["texas_154_a", "texas_west_b", "New_York"],
"Value":[10, 12, 25]})
Код:
Coefic = 10
df.Value= df.Value[df['Name'].str.contains((f'texas'))] * Coefic
выход:
Name Value
"texas_154_a" 100
"texas_west_b" 120
"New_York"], NaN
Желаемый результат:
Name Value
"texas_154_a" 100
"texas_west_b" 120
"New_York"], 25
import numpy as np
df['Value']=np.where(df.Names.str.contains('texas'),df['Value'].astype(int)*10,df['Value'])
df
Вы устанавливаете отфильтрованную версию серии в серию. Итак, результаты, которые вы отфильтровали, будут
NaN
. вы можете использоватьdf.Value = df.Value.mask(df['Names'].str.contains(f'texas'), df.Value * Coefic)
илиdf.Value = df.Value.where(~df['Names'].str.contains(f'texas'), df.Value * Coefic)
илиdf.Value = np.where(df['Names'].str.contains(f'texas'), df.Value * Coefic, df.Value)
илиdf.loc[df['Names'].str.contains(f'texas'), ['Value']] = df.Value * Coefic