我有一个包含 5 列和多行的 csv 文件,格式如下:
BAL 27 DEN 49 2013-09-05T20:30:00
我想比较 2 个分数并将获胜者的名字作为第 6 列返回
我试过这个:
from pandas import read_csv
Games = open("games.csv","rb")
df = read_csv(Games, header=None)
#print df
#print df[0]
if df[3] > df[1]:
print df[2]
else:
print df[0]
我收到一个ValueError: The truth value of a Series is ambiguous
有什么办法可以实现我的目标吗?
最佳答案
基本上,您必须记住 bool 值 df["home"] > df["guest"]
是一个向量——您可以利用它来将主队名称分配给向量为 True
的每一行。你可以尝试这样的事情:
模拟一些数据:
In [22]: df = pandas.DataFrame({"home":[10,13,7,24,17],
"guest":[13, 7, 7, 30, 17],
"home_name":list("ABCDE"),
"guest_name":list("abcde")})
创建一个新列,并将客人姓名分配给客人分数大于家庭分数的每一行(注意“获胜者”列中的其他行在第一次分配后将是 NaN,并且将被填充渐进式):
In [23]: df.loc[df["guest"]>df["home"], "winner"] = df["guest_name"]
In [24]: df.loc[df["guest"]<df["home"], "winner"] = df["home_name"]
In [25]: df.loc[df["guest"]==df["home"], "winner"] = "tie"
In [26]: df
Out[26]:
home_name guest_name home guest winner
0 A a 10 13 a
1 B b 13 7 B
2 C c 7 7 tie
3 D d 24 30 d
4 E e 17 17 tie
关于python - 比较列 pandas python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22079449/