2016-11-08 96 views
-1

我在索引某些列時遇到問題。當我嘗試這樣的索引上的Python:.loc在Pandas-Python中建立索引

list(df1.loc[:,1980:1987]) 

我收到以下錯誤: 類型錯誤:不能做切片與這些索引[1980]的

索引,如果我嘗試這樣的:

list(df1.loc[:,'1980':'1987']) 

我得到以下錯誤:

KeyError異常: '1980年'

dtype是float64。我希望能夠調用列1980 - 1987年的列標籤,並刪除那些列,但不調用索引列號,但是標籤。

謝謝

+0

不確定具體問題。但快速修復將是'df1.select(lambda x:1980 <= x <1987)' – shanmuga

+0

您能提供一個獨立的示例來演示問題嗎? – BrenBarn

回答

0

切片適用於任何類型的列。看下面的例子。也許,你必須檢查你的數據和/或給我們提供一個例子。

# Test data 
df = pd.DataFrame({'1980': ['A', 'B'], 
        '1981': ['A', 'B'], 
        '1982': ['A', 'B']}) 

# With string 
print(df.columns.dtype) 
print(df.loc[:,'1980':'1981']) 

# object 
# 1980 1981 
# 0 A A 
# 1 B B 

# With integer 
df.columns = df.columns.astype('int') 
print(df.columns.dtype) 
print(df.loc[:,1980:1981]) 

# int64 
# 1980 1981 
# 0 A A 
# 1 B B 

# With float 
df.columns = df.columns.astype('float') 
print(df.columns.dtype) 
print(df.loc[:,1980:1981]) 

# float64 
# 1980.0 1981.0 
# 0  A  A 
# 1  B  B 
+0

你好,謝謝你的回答我的數據表看起來像這樣:2064 2065 2066 2067 2068 2069 2070 0楠楠楠楠楠楠的NaN 1 NaN的楠楠楠楠楠楠 2楠楠楠楠楠楠的NaN – user1682697

+0

當我運行print(df1.loc [:,2060:2062])我得到以下消息:TypeError:無法對使用這些索引器[2060] user1682697

+0

進行索引該dtypes是:2060 float64 2061 float64 2062 float64 2063 float64 2064 float64 2065 float64 2066 float64 2067 float64 2068 float64 2069 float64 2070 float64 – user1682697