我正在写一个纸牌游戏分析脚本。为方便起见,数据存储在Excel工作表中。因此,用户可以在excel表中输入每个游戏的信息,并使用python脚本分析游戏的返回。 3个竞争对手参与了纸牌游戏(总共4个人),我想分析一个玩家的整体回报。例如。我想知道我父亲在与汤姆打牌时赢了多少。
excel表包含几个功能,如“date,start_time,end_time,duration,location,Pal1,Pal2,Pal3”和目标“Return”,正数为增益,负数为亏损。使用python pandas读取数据。
我没有弄清楚如何索引某个朋友,因为他/她可能在“pal#”栏中。当涉及某个朋友时,我需要计算回报的平均值。
path = 'excel.xlsx'
data_df = pd.read_excel(path)
def people_estimation(raw_data, name):
data = raw_data
df1 = data.pivot_table(columns=['牌友1'], values='收益', aggfunc=np.mean)
df2 = data.pivot_table(columns=['牌友2'], values='收益', aggfunc=np.mean)
df3 = data.pivot_table(columns=['牌友3'], values='收益', aggfunc=np.mean)
interest = (df1[name] + df2[name] + df3[name])/3
print("The gain with", name, "is :", interest)
上面的代码实现了我想要的。但我认为有更好的方法可以做到这一点。谁能帮忙。提前谢谢。
答案 0 :(得分:0)
>>> a
a b c
0 2 2 1
1 3 1 2
2 4 1 3
>>> mask = (a['a']==2) | (a['c']==2)
0 True
1 True
2 False
dtype: bool
>>> a[mask]
a b c
0 2 2 1
1 3 1 2
>>> a[mask]['c']
0 1
1 2
Name: c, dtype: int64
>>> a[mask]['c'].mean()
1.5
我认为在你的代码中错误的是掩码的条件应该在括号中。
data[(data['牌友1'] == 'Tom') | (data['牌友2'] == 'Tom') | (data['牌友3'] == 'Tom')]['收益'].mean()