date data1
0 2012/1/1 100
1 2012/1/2 109
2 2012/1/3 108
3 2012/1/4 120
4 2012/1/5 80
5 2012/1/6 130
6 2012/1/7 100
7 2012/1/8 140
给定上面的 Dataframe ,我想获得data1
值在每行data1
字段± 10之间的行数,并将该计数附加到每行,如下所示:
date data Count
0 2012/1/1 100.0 4.0
1 2012/1/2 109.0 4.0
2 2012/1/3 108.0 4.0
3 2012/1/4 120.0 2.0
4 2012/1/5 80.0 1.0
5 2012/1/6 130.0 3.0
6 2012/1/7 100.0 4.0
7 2012/1/8 140.0 2.0
因为每行的字段都是rule的比较对象,所以我使用iterrows
,尽管我知道这并不优雅:
result = pd.DataFrame(index=df.index)
for i,r in df.iterrows():
high=r['data']+10
low=r['data1']-10
df2=df.loc[(df['data']<=r['data']+10)&(df['data']>=r['data']-10)]
result.loc[i,'date']=r['date']
result.loc[i,'data']=r['data']
result.loc[i,'count']=df2.shape[0]
result
有没有其他Pandas式的方法可以做到这一点?谢谢你的帮助!
1条答案
按热度按时间j0pj023g1#
对布尔掩码和计数
True
使用numpy广播,使用sum
: