python - 比较列 pandas python

标签 python csv numpy pandas multiple-columns

我有一个包含 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/

相关文章:

python - Eigen 矩阵乘法比 cblas 慢?

Python正则表达式通过带有一个前导空格的特殊字符截断字符串

python - 多重排列,包括重复

python - 使用 DictReader 访问 CSV 的第三列时出现 KeyError

python - 寻找大矩阵最小二乘解的更快方法

python - 向量和 pandas 列(线性向量)之间的余弦相似度

python - 如何重定向到 404 上的特定网址

python - 如何在 bash 中制作 python 脚本 "pipeable"?

php - 如何从 MySQL 表数据创建 Word 文档?

python - 如何使用 pyspark 从 CSV 设置 Spark 中的 parquet 中正确的数据类型