Python 计算循环中不同天数的平均值
我有一个像这样的数据框Python 计算循环中不同天数的平均值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个像这样的数据框 Date Daily Risk Score 0 2020-06-26 6.0 1 2020-06-27 6.0 2 2020-06-28 6.0 3 2020-06-29 6.0 4 2020-06-30 6.0 5 2020-07-01 6.0 6 2020-07-02 6.0 7 2020-07-03 6.0 8 2020-07-04 6.0 9 2020-07-05 6.0 10 2020-07-0
Date Daily Risk Score
0 2020-06-26 6.0
1 2020-06-27 6.0
2 2020-06-28 6.0
3 2020-06-29 6.0
4 2020-06-30 6.0
5 2020-07-01 6.0
6 2020-07-02 6.0
7 2020-07-03 6.0
8 2020-07-04 6.0
9 2020-07-05 6.0
10 2020-07-06 6.0
11 2020-07-07 6.0
12 2020-07-08 6.0
13 2020-07-09 6.0
14 2020-06-26 6.0
15 2020-06-27 6.0
16 2020-06-28 6.0
17 2020-06-29 6.0
18 2020-06-30 6.0
19 2020-07-01 6.0
20 2020-07-02 6.0
21 2020-07-03 6.0
22 2020-07-04 6.0
23 2020-07-05 6.0
24 2020-07-06 6.0
25 2020-07-07 6.0
26 2020-07-08 6.0
27 2020-07-09 6.0
28 2020-06-26 1.0
29 2020-06-27 1.0
实际的数据帧类似于50k个条目。然后我想取每个日期的所有每日风险分数的平均值。然后,我想将14个新平均值中的每一个存储在一个名为“means”的新列中,其中有14个值对应于计算它们的日期
我试着这样做:
df2['Date']= pd.to_datetime(df2['Date'])
dates=pd.date_range(today, (today+dt.timedelta()))
for i in dates:
df2=df2[df2['Date']==i]
df2['means']=df2['Daily Risk Score'].mean()
但这只计算第一天的平均值,然后停止循环。我做错了什么?你可以这样做:
mean_df = df.groupby("Date").mean().reset_index()
mean_df.columns = ["Date", "ScoreMean"]
# Date means
#0 2020-06-26 4.333333
#1 2020-06-27 4.333333
#2 2020-06-28 6.000000
#3 2020-06-29 6.000000
#4 2020-06-30 6.000000
#5 2020-07-01 6.000000
#6 2020-07-02 6.000000
#7 2020-07-03 6.000000
#8 2020-07-04 6.000000
#9 2020-07-05 6.000000
#10 2020-07-06 6.000000
#11 2020-07-07 6.000000
#12 2020-07-08 6.000000
#13 2020-07-09 6.000000
result = pd.merge(df, mean_df, on="Date")
# Date DailyRiskScore means
#0 2020-06-26 6.0 4.333333
#1 2020-06-26 6.0 4.333333
#2 2020-06-26 1.0 4.333333
#3 2020-06-27 6.0 4.333333
#4 2020-06-27 6.0 4.333333
#5 2020-06-27 1.0 4.333333
#6 2020-06-28 6.0 6.000000
#7 2020-06-28 6.0 6.000000
#8 2020-06-29 6.0 6.000000
#9 2020-06-29 6.0 6.000000
#10 2020-06-30 6.0 6.000000
#11 2020-06-30 6.0 6.000000
#12 2020-07-01 6.0 6.000000
#13 2020-07-01 6.0 6.000000
#14 2020-07-02 6.0 6.000000
#15 2020-07-02 6.0 6.000000
#16 2020-07-03 6.0 6.000000
#17 2020-07-03 6.0 6.000000
#18 2020-07-04 6.0 6.000000
#19 2020-07-04 6.0 6.000000
#20 2020-07-05 6.0 6.000000
#21 2020-07-05 6.0 6.000000
#22 2020-07-06 6.0 6.000000
#23 2020-07-06 6.0 6.000000
#24 2020-07-07 6.0 6.000000
#25 2020-07-07 6.0 6.000000
#26 2020-07-08 6.0 6.000000
#27 2020-07-08 6.0 6.000000
#28 2020-07-09 6.0 6.000000
你能解释一下吗
然后我想把14个新的平均值中的每一个存储在一个名为“means”的新列中,其中有14个值对应于它们的计算日期。
。为什么只有14个值?我只需要总共14个新值。我希望我的脚本计算2020-06-26所有日期的平均值,然后计算2020-06-27所有日期的平均值,以此类推。这有意义吗?不是真的,我想知道仅仅考虑14个新值的逻辑是什么。考虑添加预期的输出。你可以使用<代码> DF2。GROPBY(日期)。AGG({“每日风险分数”:平均})< /代码>我认为这是我想要的。有没有一个好的方法来检查,因为数据框大约有50k个条目?首先,确保mean_df
size等于您拥有的唯一日期数,我认为是14。然后,您可以检查结果中的随机行,并确保所有内容都符合预期。我是否回答了您的问题?