Dataframe cummin столбец, который начинается с определенного индекса - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть фрейм данных из двух столбцов.Дата и десятичное число.Я хочу создать новый столбец в кадре данных, который отображает cummin столбца десятичных чисел только в том случае, когда время прошло 9: 30

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Использование between_time с expanding

df['new']=df.between_time('09:30','23:59').expanding().min()
df
                     number  new
2018-12-20 09:00:00     1.4  NaN
2018-12-20 09:31:00     4.5  4.5
2018-12-20 09:45:00     2.3  2.3
0 голосов
/ 21 декабря 2018

Используйте mask для маскировки, затем cummin.

# df.index = pd.to_datetime(df.index, errors='coerce')
df['cummin'] = df.number.mask(df.index.strftime('%H:%M') < '09:30').cummin()

Вы также можете запросить атрибуты hour и minute индекса, чтобы получить часы:

df['cummin'] = df.loc[
    (df.index.hour >= 9) & (df.index.minute > 30), 'number'].cummin()

MCVE:

df = pd.DataFrame([1.4, 4.5, 2.3], 
                  index=['9:00', '9:31', '9:45'], 
                  columns=['number'])
df.index = pd.to_datetime(df.index)
df
                     number
2018-12-21 09:00:00     1.4
2018-12-21 09:31:00     4.5
2018-12-21 09:45:00     2.3

df.assign(number=(
    df.number.mask(df.index.strftime('%H:%M') < '09:30').cummin()))

                     number  cummin
2018-12-21 09:00:00     NaN     NaN
2018-12-21 09:31:00     4.5     4.5
2018-12-21 09:45:00     2.3     2.3

df.assign(number=df.loc[
    (df.index.hour >= 9) & (df.index.minute > 30), 'number'].cummin())

                     number  cummin
2018-12-21 09:00:00     NaN     NaN
2018-12-21 09:31:00     4.5     4.5
2018-12-21 09:45:00     2.3     2.3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...