Определить субботу в panda dataframe и изменить значение в строке

#python-3.x #pandas #dataframe

#python-3.x #панды #фрейм данных

Вопрос:

У меня есть panda dataframe в python ниже.

 full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   62295.0
 bottle_a  AX80    20200926    12880.00  13000.00   14224.0

 
  

Я хочу определить, какая строка приходится на субботу, на основе столбца Date_YMD . Найдите volume значение в эту субботу и замените его на удвоенное значение. Для приведенной выше таблицы она должна 14224 принадлежать строке с. Date_YMD 20200926

Окончательный фрейм данных должен выглядеть примерно так;

 full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   62295.0
 bottle_a  AX80    20200926    12880.00  13000.00   28448.0  
  

Я использую python 3.8.

Ответ №1:

Преобразовать столбец в datetimes, а затем несколько значений по выбранному сравнению с Series.dt.dayofweek и DataFrame.loc :

 df['Date_YMD'] = pd.to_datetime(df['Date_YMD'], format='%Y%m%d')

df.loc[df['Date_YMD'].dt.dayofweek.eq(5), 'volume'] *= 2
print (df)
  full_name serial   Date_YMD     prc1      prc2   volume
0  bottle_a   AX80 2020-09-22  12874.5  12927.75  61023.0
1  bottle_a   AX80 2020-09-23  12878.5  12926.75  61023.0
2  bottle_a   AX80 2020-09-24  12872.5  12928.75  61023.0
3  bottle_a   AX80 2020-09-25  12885.5  12984.25  62295.0
4  bottle_a   AX80 2020-09-26  12880.0  13000.00  28448.0