如何在不更改数字类型的情况下从Excel创建列表/数组?

时间:2019-09-08 22:46:13

标签: python excel list numpy xlsx

我正在尝试创建一个列表,以便使用我获得的值,但是,当我使用

时,
nums=pd.read_excel(excel, header=None)  

然后

nums=np.asarray(nums)

每个值的类型变为numpy.float64,因此,每当我尝试过滤一个值时,都会基于它是浮点数的事实而对这些值不进行计数。有没有一种方法可以从excel中的列创建列表/数组,而值类型不会更改,而实际上是作为常规浮点数读取的? (我曾尝试在过滤器中包含numpy.float64类型,但问题是它包含来自excel的整数,因此我不应该使用它,因此它不起作用)

任何帮助,谢谢!

编辑1:

print(nums):
        0
0    1.00
1    2.00
2    3.00
3    4.00
4    5.00
5    6.00
6    7.00
7    8.00
8    9.00
9   10.00
10   3.30
11   3.22

并且我的预期输出将是1,2,3,等等(int类型,而不是将它们转换成的numpy.float64)

<class 'numpy.float64'>

编辑2: 如果我要打印np.asarray(nums),它将看起来像这样:

 [[ 1.  ]
 [ 2.  ]
 [ 3.  ]
 [ 4.  ]
 [ 5.  ]
 [ 6.  ]
 [ 7.  ]
 [ 8.  ]
 [ 9.  ]
 [10.  ]
 [ 3.3 ]
 [ 3.22]]

2 个答案:

答案 0 :(得分:0)

尝试使用pandas.read_excel,将所需的数据类型传递给dtype参数,例如:

{'a': np.float64, 'b': np.int32}

converters参数(输入可调用对象的字典以将特定值转换为所需的类型)。

答案 1 :(得分:0)

解决问题的方法比您建议的要简单得多。

Numpy允许您询问float(或float64)是否为整数:

import numpy as np

a_row = np.array([1,2,3,4,5,3.3])
a_column = a_row.reshape(6,1)

print(a_row[4].is_integer())
print(a_row[5].is_integer())
print(a_column[4][0].is_integer())
print(a_column[5][0].is_integer())

结果:

True
False
True
False