最近,我开始学习熊猫。我确实试图获得解决方案,但找不到它。这是问题。
我有一个数据框:简单的足球数据。对于每支球队,我想知道他们在前两场比赛中打进了多少个进球;无论他们是主队还是客队。因此,我必须为每个团队从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?
最近,我开始学习熊猫。我确实试图获得解决方案,但找不到它。这是问题。我有一个数据框:简单的足球数据。对于每个团队,我想知道多少...
方法1:pd.wide_to_long
: