【发布时间】:2016-03-11 09:13:27
【问题描述】:
我想计算一个值在 pandas/python 中的当前位置出现的所有时间。必须考虑一个条件(数字必须出现在“分数”列中才能计算游戏已玩;如果我读取的 excel 文件中没有值,则显示为 NaN)。
下面的代码是我所在的位置:
import pandas as pd
df = pd.read_excel('G:\Project\SOQ1.xlsx')
df['date'] = pd.to_datetime(df['date'])
df = df.sort(columns='date')
df = df.set_index('date')
def calc_all_count(team_name):
home_count = df['home'].value_counts().get(team_name, 0)
away_count = df['away'].value_counts().get(team_name, 0)
all_count = home_count + away_count
return all_count
def calc_home_count(team_name):
home_count = df['home'].value_counts().get(team_name, 0)
return home_count
def calc_away_count(team_name):
away_count = df['away'].value_counts().get(team_name, 0)
return away_count
df['hag'] = df['home'].map(calc_all_count)
df['aag'] = df['away'].map(calc_all_count)
df['hahg'] = df['home'].map(calc_home_count)
df['aaag'] = df['away'].map(calc_away_count)
print df
league home away hscore ascore hag aag hahg aaag
date
2015-01-03 03:02:00 MLB Cle Tex 9 6 3 15 2 7
2015-05-10 03:03:00 MLB Bos Cle 6 7 16 3 7 1
2015-10-15 03:00:00 MLB Tex Bos 5 2 15 16 8 9
2015-10-15 03:30:00 MLB Tex Bos 1 6 15 16 8 9
2015-10-16 00:00:00 MLB Tex Bos 4 4 15 16 8 9
2015-10-17 03:30:00 MLB Bos Tex 2 8 16 15 7 7
2015-10-18 00:00:00 MLB Tex Bos 9 10 15 16 8 9
2015-10-20 00:00:00 MLB Bos Tex 2 3 16 15 7 7
2015-10-21 00:00:00 MLB Tex Bos 5 1 15 16 8 9
2015-10-22 03:00:00 MLB Tex Bos 5 3 15 16 8 9
2015-10-23 00:00:00 MLB Bos Tex 3 4 16 15 7 7
2015-10-25 23:00:00 MLB Bos Tex 6 6 16 15 7 7
2015-10-25 23:00:00 MLB Bos Tex 5 1 16 15 7 7
2015-10-26 00:00:00 MLB Tex Bos 9 6 15 16 8 9
2015-10-27 01:30:00 MLB Bos Tex 10 5 16 15 7 7
2015-10-28 01:00:00 MLB Tex Bos NaN NaN 15 16 8 9
2015-11-20 03:01:00 MLB Cle Bos NaN NaN 3 16 2 9
我想要的是每场比赛之前的比赛次数。所以第一场比赛/行应该读为 0 的所有数字,因为没有人玩过。应该是这样的:
league home away hscore ascore hag aag hahg aaag
date
2015-01-03 03:02:00 MLB Cle Tex 9 6 0 0 0 0
2015-05-10 03:03:00 MLB Bos Cle 6 7 0 1 0 0
2015-10-15 03:00:00 MLB Tex Bos 5 2 1 1 0 0
2015-10-15 03:30:00 MLB Tex Bos 1 6 2 2 1 1
2015-10-16 00:00:00 MLB Tex Bos 4 4 3 3 2 2
2015-10-17 03:30:00 MLB Bos Tex 2 8 4 4 1 1
2015-10-18 00:00:00 MLB Tex Bos 9 10 5 5 3 3
2015-10-20 00:00:00 MLB Bos Tex 2 3 6 6 2 2
2015-10-21 00:00:00 MLB Tex Bos 5 1 7 7 4 4
2015-10-22 03:00:00 MLB Tex Bos 5 3 8 8 5 5
2015-10-23 00:00:00 MLB Bos Tex 3 4 9 9 3 3
2015-10-25 23:00:00 MLB Bos Tex 6 6 10 10 4 4
2015-10-25 23:00:00 MLB Bos Tex 5 1 11 11 5 5
2015-10-26 00:00:00 MLB Tex Bos 9 6 12 12 6 6
2015-10-27 01:30:00 MLB Bos Tex 10 5 13 13 6 6
2015-10-28 01:00:00 MLB Tex Bos NaN NaN 14 14 7 7
2015-11-20 03:01:00 MLB Cle Bos NaN NaN 2 14 1 7
如何构建以计算“之前”当前位置?我想我应该使用 .iloc 或 .ix 但我想不通。
对实现此功能或更好的代码的任何帮助表示赞赏。也可以更好地提出问题的提示。
【问题讨论】: