Pandas-如何根据条件求和2列的X个最后值

问题描述 投票:0回答:1

最近,我开始学习熊猫。我确实试图获得解决方案,但找不到它。这是问题。

我有一个数据框:简单的足球数据。对于每支球队,我想知道他们在前两场比赛中打进了多少个进球;无论他们是主队还是客队。因此,我必须为每个团队从2个不同的列中汇总特定数量的值。

样本数据:

import pandas as pd
data = [['2018-02-03', 'manutd', 'chelsea', 3, 1], ['2018-02-08', 'arsenal', 'liverpool', 1, 1], 
        ['2018-01-12', 'chelsea', 'westham', 2, 0], ['2018-01-12', 'liverpool', 'manutd', 0, 2], 
        ['2018-03-15', 'arsenal', 'chelsea', 2, 2], ['2018-02-20', 'manutd', 'brighton', 0, 0], 
        ['2018-04-01', 'westham', 'fulham', 1, 0], ['2018-03-15', 'manutd', 'westham', 2, 1]] 
df = pd.DataFrame(data, columns = ['event_time', 'home_team', 'away_team', 'home_goals', 'away_goals'])
df['event_time'] = pd.to_datetime(df['event_time'])
df.sort_values(['event_time'],inplace=True, ascending=False)
print(df)


  event_date  home_team  away_team  home_goals  away_goals
6 2018-04-01    westham     fulham           1           0
4 2018-03-15    arsenal    chelsea           2           2
7 2018-03-15     manutd    westham           2           1
5 2018-02-20     manutd   brighton           0           0
1 2018-02-08    arsenal  liverpool           1           1
0 2018-02-03     manutd    chelsea           3           1
2 2018-01-12    chelsea    westham           2           0
3 2018-01-12  liverpool     manutd           0           2

我想要实现的目标:

  event_time  home_team  away_team  home_goals  away_goals  h_goals_previous_2  a_goals_previous_2
6 2018-04-01    westham     fulham           1           0                  1                  NaN
4 2018-03-15    arsenal    chelsea           2           2                  1                    3
7 2018-03-15     manutd    westham           2           1                  3                    0
5 2018-02-20     manutd   brighton           0           0                  5                  NaN
1 2018-02-08    arsenal  liverpool           1           1                NaN                    0
0 2018-02-03     manutd    chelsea           3           1                  2                      2
2 2018-01-12    chelsea    westham           2           0                NaN                  NaN
3 2018-01-12  liverpool     manutd           0           2                NaN                  NaN

说明:-在2018-03-15阿森纳与切尔西一起踢过。在之前的2场比赛中,切尔西总共进球3个进球:1个在客队时,2个在主队时。-之前的一些目标是Nan,因为我们没有以前比赛的数据。

[我试图通过逐个团队地迭代来完成此任务,对于每个团队,我正在构建df的排序子集,然后可以汇总这些值,但是觉得它不是最佳解决方案,可以使用漂亮的Pandas表达式来完成:] >

teams = pd.unique(df[['home_team', 'away_team']].values.ravel('K'))
for team in teams:
    print(team)
    team_df = df[(df['home_team']==team) | (df['away_team']==team)]
    team_df.sort_values(['event_date'],inplace=True, ascending=False)
    print(team_df)

我如何编写而不编写循环和ifs?

最近,我开始学习熊猫。我确实试图获得解决方案,但找不到它。这是问题。我有一个数据框:简单的足球数据。对于每个团队,我想知道多少...

pandas numpy data-science
1个回答
0
投票

方法1:pd.wide_to_long

© www.soinside.com 2019 - 2024. All rights reserved.