#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