【发布时间】:2021-07-07 11:52:05
【问题描述】:
我有一个包含超过 4000 行的数据框,我正在根据该原始数据框计算另一个数据框中第 1179 行的平均值。如果在 for 循环中的比赛之前客队或主队的值计数低于 3,那么我想在第二个数据帧中删除行。
数据框示例:
Date Match ID Home team Away team Home score Away score
1 2016/11/11 2 Penn St. Wright St. 29 30
2 2016/11/11 3 Southern Ill. N.C. Central 33 34
3 2016/11/11 4 East Carolina Wichita St. 42 21
4 2016/11/11 5 Longwood Colgate 32 42
5 2016/11/11 6 Lipscomb Boston U. 21 21
df = pd.read_csv('test.csv')
df1 = df.iloc[1179:]
matches = []
for a in df1['Match ID']:
matches.append(a)
for match in matches:
match_line = df1.loc[df1['Match ID'] == match]
idx = df.index.get_loc(df[df['Match ID'] == match].index[0])
print(idx)
neki1 = df.iloc[:idx]
home_team = match_line['Home team'].values[0]
away_team = match_line['Away team'].values[0]
home = neki1[neki1['Home team'] == home_team]
home1 = neki1[neki1['Away team'] == home_team]
away = neki1[neki1['Home team'] == away_team]
away1 = neki1[neki1['Away team'] == away_team]
home_score = []
away_score = []
for data in home['Home score']:
home_score.append(data)
for data in home1['Away score']:
away_score.append(data)
df1.loc[df1['Match ID'] == match, 'Home score'] = mean(home_score)
df1.loc[df1['Match ID'] == match, 'Away score'] = mean(away_score)
我尝试了 value_counts 但我没有得到正确的结果,因为它没有正确放置,所以我只想知道放置它的逻辑。 我希望我很清楚:)
【问题讨论】:
-
你能分享一下数据框吗?至少几行适当的列
-
刚刚添加到原帖
-
您能否将数据以文本形式共享,以便轻松复制。另外,您的意思是“value_count”还是列中的值?理想情况下还要给出一个输出示例
-
输出将是未达到分数的平均分数,而球队的比赛少于 3 场比赛。因此,例如 A 队得分 50、50、50、50、80 分,但上一场比赛是对阵一支到目前为止只打了 2 场比赛的球队,平均应该是 50 分而不是 56 分,所以理想情况下我会放弃那一排不计入它的意思
-
从图片改为文字
标签: python-3.x pandas dataframe