我对Python很陌生并且已经在网上搜索了这个问题的答案,但是如果没有将其作为示例进行查找则很难找到!
我有数据的数据在这里: Dataset
我所追求的是每个家庭团队'已经出现在“家庭团队”和“家庭团队”中。和' AwayTeam'列到日期并包括日期。因此,对于样本中的最后一行数据,输入将是' Fulham',输出= 4.这是因为' Fulham'已经出现过4次在HomeTeam'和' AwayTeam'列。对于第一行数据,输入将是' Fulham',但输出= 1,因为这是第一次' Fulham'已经出现了。对于样本数据集,输出应为:
[1,1,2,1,3,1,4]
到目前为止,我的代码只允许我获得每个团队出现在' HomeTeam'仅限列:
df['H Count'] = df.groupby(['HomeTeam']).cumcount()+1
这给了我输出:
[1,1,1,1,2,1,2]
非常感谢任何帮助!
答案 0 :(得分:0)
据我了解,目前在HomeTeam的团队正在被用作输入。
我不知道您在数据集中的阅读方式,但我刚刚创建了以下列表。然而,逻辑应该是明确的。
有了以下内容,我得到[1, 1, 3]
HomeTeam = list()
HomeTeam.append("Fulham")
HomeTeam.append("Tottenham")
HomeTeam.append("Fulham")
AwayTeam = list()
AwayTeam.append("Chelsea")
AwayTeam.append("Fulham")
AwayTeam.append("Liverpool")
H_Count = []
p = 1
''' The team in the HomeTeam is used as input'''
for team in HomeTeam:
''' Get the list up until the current row'''
tmp_Home = HomeTeam[:p]
tmp_Away = AwayTeam[:p]
''' Count the number of times team has occured in home and away'''
H_Count.append(tmp_Home.count(team) + tmp_Away.count(team))
p+=1