有一个包含StartQTR, EndQTR, DAte
和Z
列的数据框,需要做的是第一对StartQTR,EndQTR我们有非零Z值,我们需要创建新列Z1,我们将Z的值移到Z1,差异为一天。
例如像这里
df = pd.read_csv(......)
df['DATE']= pd.to_datetime(df['DATE'])
df.set_index('DATE', inplace=True)
df1 = (df.groupby('START')['HH_F'].shift(freq='1D',periods=1).reset_index())
df2 =(pd.merge(df.reset_index(),df1, on=['START','DATE'], how='left', suffixes=('','1')))
mask = df2.START.duplicated(keep=False)
df2.ix[mask, 'Z1'] = df2.ix[mask, 'Z1'].fillna(0)
print (df2)
----------
START END DATE Z Z1
21600000 22499000 2012-10-01 0
22500000 23399000 2012-10-01 0
23400000 24299000 2012-10-01 0
23400000 24299000 2012-10-01 0
24300000 25199000 2012-10-01 0
25200000 26099000 2012-10-01 110412 0
26100000 26999000 2012-10-01 110412
25200000 26099000 2012-10-02 155886 110412
27900000 28799000 2012-10-02 155886
28800000 29699000 2012-10-03 160687
25200000 26099000 2012-10-03 160687 155886