【问题标题】:How do you delete a non-numeric column from an input dataset?如何从输入数据集中删除非数字列?
【发布时间】:2015-10-27 19:33:30
【问题描述】:

例如,如果我想考虑花卉种类、花瓣数量、发芽时间和用户ID,则用户ID 将有一个连字符。所以在我的数据分析中,我不想使用它。我知道我可以对其进行硬编码,但我想这样当我输入任何数据集时,它会自动删除带有non-numeric 输入的列。

编辑:不清楚的问题。我正在使用熊猫从 csv 文件中读取数据。

例子:

        Species    NPetals    GermTime    UserID
    1    R. G        5          4           65-78

    2    R. F        5          3           65-81

我想从dataset 中删除UserIDSpecies 列。

【问题讨论】:

  • 你的问题很不清楚。首先,您的数据是什么格式的? SQL 数据库? CSV? Excel?熊猫数据框?请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 对不起,我已经澄清了一些问题。
  • 那么del df['Species']del df['UserID'] 有什么问题?
  • 这对于这个特定的数据集来说很好,但我确实想让它更智能。如果我使用另一个数据集,它应该会自动删除非数字列。我不想每次更改数据集时都更改代码。
  • 所以设置一个小if循环测试每列的dtype...

标签: python python-2.7 pandas


【解决方案1】:

从文档中,您可以通过使用select_dtypes 过滤来选择数字数据:

In [5]:
df = pd.DataFrame({'a': np.random.randn(6).astype('f4'),'b': [True, False] * 3,'c': [1.0, 2.0] * 3})
df

Out[5]:
          a      b  c
0  0.338710   True  1
1  1.530095  False  2
2 -0.048261   True  1
3 -0.505742  False  2
4  0.729667   True  1
5 -0.634482  False  2

In [15]:    
df.select_dtypes(include=[np.number])

Out[15]:
          a  c
0  0.338710  1
1  1.530095  2
2 -0.048261  1
3 -0.505742  2
4  0.729667  1
5 -0.634482  2

您可以传递任何有效的np dtype hierarchy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2015-08-23
    • 2020-08-03
    • 2010-10-14
    相关资源
    最近更新 更多