pandas读取xlsx生成列表时元素为numpy数组如何转纯数值列表
问题原因
df.values返回的是二维numpy数组,当仅选取black_toner_percentage单列时,遍历df.values得到的每个元素都是长度为1的一维numpy数组,直接将该数组append到列表中,最终得到的列表元素就是numpy数组对象,而非预期的纯数值。
修改方案
方案1(推荐,代码最简洁)
无需手动编写循环追加逻辑,pandas的Series对象自带tolist()方法,可直接将单列数据转换为原生Python格式的纯数值列表:
import pandas as pd data = pd.read_excel('testfile.xlsx') # 直接提取目标列调用转列表方法 inputdata = data['black_toner_percentage'].tolist() print(inputdata)
方案2(保留原有循环逻辑适配修改)
如果需要保留循环遍历的写法,只需在append时取出一维numpy数组内的第一个标量值即可:
import pandas as pd inputdata = [] data = pd.read_excel('testfile.xlsx') df = pd.DataFrame(data, columns=['black_toner_percentage']) for i in df.values: # 提取数组中的单个数值后再追加到列表 inputdata.append(i[0]) print(inputdata)
以上两种方法输出的inputdata均为[100,100,...]格式的纯数值列表,可直接作为数据集输入使用。
内容的提问来源于stack exchange,提问作者Luke Nash
相关产品推荐
相关产品推荐

