2015-11-14 36 views
2

我有一個數據框,它包含數據類型integer,string,numeric等。 類似下面的內容。我想排除所有非數字變量。 Python中有沒有自動化的方法?如何從Python中的數據框中排除非數字整數

'data.frame': 891 obs. of 12 variables: 
$ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ... 
$ Survived : int 0 1 1 1 0 0 0 0 1 1 ... 
$ Pclass  : int 3 1 3 1 3 3 1 3 3 2 ... 
$ Name  : Factor w/ 891 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ... 
$ Sex  : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ... 
$ Age  : num 22 38 26 35 35 NA 54 2 27 14 ... 
$ SibSp  : int 1 1 0 1 0 0 0 3 0 1 ... 
$ Parch  : int 0 0 0 0 0 0 0 1 2 0 ... 
$ Ticket  : Factor w/ 681 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ... 
$ Fare  : num 7.25 71.28 7.92 53.1 8.05 ... 
$ Cabin  : Factor w/ 148 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ... 
$ Embarked : Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ... 

數值變量排除後,我的數據幀應該像下面的:

'data.frame': 891 obs. of 12 variables: 
$ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ... 
$ Survived : int 0 1 1 1 0 0 0 0 1 1 ... 
$ Pclass  : int 3 1 3 1 3 3 1 3 3 2 ... 
$ Age  : num 22 38 26 35 35 NA 54 2 27 14 ... 
$ SibSp  : int 1 1 0 1 0 0 0 3 0 1 ... 
$ Parch  : int 0 0 0 0 0 0 0 1 2 0 ... 
$ Fare  : num 7.25 71.28 7.92 53.1 8.05 ... 
+0

這是'熊貓'嗎? – hpaulj

+0

@hpaulj - 對不起,如果這不是熊貓。我現在正在從R轉換到Python。所以在python下,所有的東西都是新的。 – Arun

+0

我問「pandas」的原因是那個包(建立在numpy之上)使用'dataframe'術語。在'numpy'中,我們只是擁有統一數據類型的多維數組,以及具有混合數據類型字段的結構化數組。可能是你應該添加一個'R'標籤,所以具有交叉經驗的其他人可以提供幫助。 – hpaulj

回答

3

我們可以使用._get_numeric_data()

import pandas as pd #import the pandas library 
#creating a small dataset for testing 
df1 = pd.DataFrame({'PassengerId' : [1, 2, 3], 
     'Name' : ['Abbing, Mr. Anthony', 'Ann, C', 'John, H'], 
     'Fare' : [7.25, 71.28, 7.92]}) 
#extract only the numeric column types 
df2 = df1._get_numeric_data() 
print(df2) 

或者另一種選擇是select_dtypes()

df3 = df1.select_dtypes(include = ['int64', 'float64']) 
print(df3) 
+0

在這裏有一個問題。在我的數據框中,我有幾個數字變量,它們是包含0或1的邏輯值以及幾個包含數值的分類變量。無論如何也排除這一點? – Arun

+0

只是出於好奇而問。 R中是否還有類似的功能? – Arun

+0

@Arun在'R'中,如果'df1'是'data.frame',我們可以使用'df1 [sapply(df1,is.numeric)]'來獲取數字列或'Filter(is.numeric, df1)' – akrun

相關問題