如何在数据帧中将值从一列移动到另一列,以便值在1天内平均移动?

2024-10-03 11:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个包含列StartQTR, EndQTR, DAteZ的数据帧,需要做的是,对于第一对StartQTR,EndQTR,其中我们有非空的Z值,我们需要创建新的列Z1,在这里我们将Z的值移动到Z1,并且有一天的差异

比如这里

enter image description here

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

Tags: 数据dfdateindexmaskstartpddf1