2017-10-07 50 views
0

我已經很簡單了。下面的代碼,並希望選擇所有有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] 

一個highest_ranking隊然後給了我一個

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

因爲一些highest_rank enteries是「 - 」。 Urgh。什麼是執行此(整數)選擇的簡單方法?

回答

3

用戶pd.to_numericerrors ='coerce'

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

輸出:

 
    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 
4  5 Argentina 1967    1   2128 
3

可以解析 「 - 」 作爲南值。這可能會幫助你更多的未來任務。

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

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

+1

閱讀文檔,'keep_default_na'默認爲true,所以它會自動添加。你的版本是不必要的代碼味道。 – mkastner

+0

@MaxU在過去的半年裏,我花了太多的時間閱讀文檔,感覺就像他們有一個解決方案... – mkastner

+0

和@npross,我的解決方案,你將永遠是整數,你永遠不會需要將它們投射到任何未來的任務中。只有當你想要可視化表格時,你需要用減號來替換NaN值(如果這是你想要的形象化) – mkastner