根据每月触发的进入和退出条件保留数据框值

时间:2018-09-23 00:27:09

标签: python-2.7 pandas dataframe

DataFrame df具有date列以及具有float值的许多其他列。其中一些值可以随机为null。另外,date可以是非连续的(即,可能在这之间缺少几天)。对于每个非日期列,
1)如果值大于entryV,则在每个月的第一天,保留其所有将来值,直到下面的#2。
2)现在在任何下一个月的第一天,如果#1之后的先前保留值的值下降到exitV以下,则所有将来值都将在该列中设为NaN,除非它们达到entryV以后任何一个月的第一天。

下面是dfentryV=41的示例数据帧exitV=20

import pandas as pd
import numpy as np
from datetime import datetime, timedelta
np.random.seed(100)

df = pd.DataFrame(np.random.randint(0,1000,size=(100, 10)).astype(float)/10, columns=list('ABCDEFGHIJ'))
df = df.mask(np.random.choice([True, False], size=df.shape))
df['date'] = [datetime.today() + timedelta(days=x) for x in range(0, 100)]
# df['month'] = df['date'].dt.month
# df['is_same_month'] = df['month'].diff().eq(0)
# df.drop('month', inplace=True, axis=1)

0 个答案:

没有答案