【问题标题】:how to exclude the non numerical integers from a data frame in Python如何从Python中的数据框中排除非数字整数
【发布时间】:2015-11-14 04:42:22
【问题描述】:

我有一个数据框,它由整数、字符串、数字等数据类型组成。 像下面的东西。我想排除所有非数字的变量。 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 ...

【问题讨论】:

  • @hpaulj - 对不起,如果这不是熊猫。我现在正在从 R 转换为 python。所以在 python 下一切对我来说都是新的。
  • 我问pandas 的原因是那个包(建立在 numpy 之上)使用了“dataframe”术语。在numpy 中,我们只有统一数据类型的多维数组,以及具有混合数据类型字段的结构化数组。也许您应该添加一个R 标签,以便其他有交叉经验的人可以提供帮助。
  • @hpaulj - 完成。谢谢

标签: python numpy scipy ipython


【解决方案1】:

我们可以使用._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 或 1 的逻辑值,要么是少数包含数值的分类变量。无论如何也要排除它吗?
  • 只是出于好奇而询问。 R中也有类似的功能吗?
  • @Arun 在R 中,如果df1data.frame,我们可以使用df1[sapply(df1, is.numeric)] 只获取数字列或Filter(is.numeric, df1)
猜你喜欢
  • 2020-07-20
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
相关资源
最近更新 更多