【问题标题】:Is there a way to get numpy to import only float values?有没有办法让 numpy 只导入浮点值?
【发布时间】:2019-09-27 10:44:12
【问题描述】:

我有一个使用 pandas 导入的大型 Excel 数据表。我需要计算标准偏差等。当我将文件转换为 numpy 时,它还会导入字符串值。有没有办法让 numpy 数组只有浮点值?

import pandas as pd
import numpy as ny
a = pd.read_excel('Prior Example.xlsm', 'Security Levels Raw')
c = a.to_numpy()

d = ny.std(c)

【问题讨论】:

  • 数据框的 dtypes 是什么?有些列是浮动的,有些是对象(字符串)吗?
  • 是的,前两列是字符串,其余的是浮点数。
  • 然后告诉 pandas 只导出浮点列到 numpy
  • 我该怎么做
  • 阅读 pandas 文档关于选择列。

标签: python excel pandas numpy


【解决方案1】:

您可以使用converters 参数(pd.read_excel 也存在)。虽然我真的会在之后转换:

test.csv

number1,number2
1,foo
2,bar
3,4
1,4

import pandas as pd

def convert_numbers(s):
    return pd.to_numeric(s, errors='coerce')

df = pd.read_csv('test.csv', converters={'number2': convert_numbers})
display(df)
df.dtypes

输出:

#   number1  number2
#0        1      NaN
#1        2      NaN
#2        3      4.0
#3        1      4.0

#number1      int64
#number2    float64
#dtype: object

【讨论】:

  • 他说的是 Excel,而不是 CSV
  • @SeverinPappadeux 公平。幸运的是,读者也有同样的论点,所以它仍然有效。使用 .csv 更容易提供 mcve
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多