【问题标题】:Simple way to convert a Pandas Series for integer comparison转换 Pandas 系列以进行整数比较的简单方法
【发布时间】:2017-10-07 16:06:30
【问题描述】:

我的方法很简单。以下代码,并希望选择所有最高排名为 1 的团队。

import pandas as pd
table = pd.read_table('team_rankings.dat')
table.head()

rank    team    rating  highest_rank    highest_rating  
0   1   Germany 2097    1   2205    
1   2   Brazil  2086    1   2161    
2   3   Spain   2011    1   2147    
3   4   Portugal    1968    2   1991    
4   5   Argentina   1967    1   2128

type((table['highest_rank'])) 
pandas.core.series.Series

table.loc[(table['highest_rank']) < 2]

然后给我一个

TypeError: unorderable types: str() < int()

因为一些最高等级的条目是'-'。呃。执行此(整数)选择的简单方法是什么?

【问题讨论】:

    标签: python pandas indexing where multiple-columns


    【解决方案1】:

    用户pd.to_numericerrors ='coerce'

    df.loc[(pd.to_numeric(df['highest_rank'],errors='coerce')) < 2]
    

    输出:

    排名团队评分最高排名最高评分 0 1 德国 2097 1 2205 1 2 巴西 2086 1 2161 2 3 西班牙 2011 1 2147 4 5 阿根廷 1967 1 2128

    【讨论】:

      【解决方案2】:

      您可以将“-”解析为 NaN 值。这可能会帮助您完成更多未来的任务。

      table = pd.read_table('team_rankings.dat', na_values="-")
      

      https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

      【讨论】:

      • 阅读文档,keep_default_na 默认为 true,因此会自动附加。你的版本是不必要的代码味道。
      • @MaxU 在过去的半年里我花了太多时间阅读文档,感觉他们对所有事情都有解决方案......
      • 和@npross,使用我的解决方案,您将始终拥有整数,您将永远不需要为任何未来的任务强制转换它们。只有当您想可视化表格时,您才需要用减号替换 NaN 值(如果您希望这样可视化它)
      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 2018-02-24
      • 2021-02-20
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      相关资源
      最近更新 更多