【问题标题】:How to select only the numerical data types and keep them in an array in python?如何仅选择数值数据类型并将它们保存在python中的数组中?
【发布时间】:2019-04-18 15:07:34
【问题描述】:

我想从 csv 中获取所有数字字段的字段,并将这些字段存储在一个数组中,以便我可以执行数学运算。我可以获取数据类型但无法限制。我是python脚本的新手,请帮助

编辑:我添加了一个示例行

所以这里的 F1 和 F3 是数字字段。所以我想把这两个字段名保存在一个数组变量中 字段名=["F1","F3"]

import csv
import pandas as pd
import numpy as np

data = pd.read_csv(r'C:\Users\spanda031\Downloads\test_19.csv')
print(data.dtypes)
with open(r'C:\Users\spanda031\Downloads\test_19.csv') as f:
    d_reader = csv.DictReader(f)

    #get fieldnames from DictReader object and store in list
    headers = d_reader.fieldnames
    print(headers)
    for line in headers:
        #print value in MyCol1 for each row
        print(line)        
        v3=np.array(data[line])

【问题讨论】:

  • 请添加示例 csv 行
  • 也提供你预期的输出

标签: python python-3.x python-2.7 pandas numpy


【解决方案1】:

select_dtypes

您可以使用np.number 或如文档中所述使用'number' 来选择所有数字系列:

# read csv file
df = pd.read_csv('file.csv')

# subset dataframe to include only numeric columns
df = df.select_dtypes(include='number')

# get column labels in array
cols = df.columns.values

# extract NumPy array from dataframe
arr = df.values

请注意,不需要 csv 模块,因为 Pandas 可以通过 pd.read_csv 读取 csv 文件。

【讨论】:

  • 感谢您的回复。我只想将列名存储在数组中,而不是那些列的值。您的代码正在将列值写入数组
【解决方案2】:

isdigit 可用于检查 Python 中数据框的任何列中是否仅存在数值。假设列名是Measure,那么,你可以写

df['Measure_isdigit'] = map(lambda x: x.isdigit(), df['Measure'])

打印 df

【讨论】:

  • 同时,如果您像您所说的那样是新手,那么直接从 Pandas 开始会给您带来麻烦。您正在使用 numpy、dictionary 等。您是新人吗?详细了解列表的操作...您将学习如何很好地使用 isdigit 函数...
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2015-04-13
相关资源
最近更新 更多