gpt4 book ai didi

python - 优雅地处理非数字元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:26 24 4
gpt4 key购买 nike

我正在尝试在数据框和列表上运行 scipys hstack 方法。为了有效地做到这一点,我必须处理列表中的非数字元素。我想尽可能优雅地即时执行此操作(即我不想编辑我正在阅读的 csv)。

我运行的代码如下:

  X = list(np.array(p.read_csv('CSVFile.csv', delimiter=";"))[:,2])
OtherColumn = p.read_csv('CSVFile.csv', delimiter=";")[["OtherCol"]]

X = sp.sparse.hstack((X, OtherColumn.values))

错误:

TypeError: no supported conversion for types: (dtype('float64'), dtype('O')

这是因为我的 OtherColumn 列包含一个“?”有坏数据的字符。我需要的逻辑有点像下面这样,但是我怎样才能在 Python 中完成它呢?抱歉,我是初学者,为此苦苦挣扎了一点!

for(i = 0; i< OtherColumn.size; i++)){
try:
X[i] = sp.sparse.hstack((X[i], OtherColumn.values[i]))
except Error:
X[i] = sp.sparse.hstack((X[i], OtherColumn.avg()))
}

在英语中,运行正常的 hstack,除非有一个 '?' char,然后使用所有 OtherColumn 值的平均值。

最佳答案

解决这个问题的最简洁的方法可能是指定“?”作为 read_csv 中的缺失数据标记:

df = p.read_csv('CSVFile.csv', delimiter=";", na_values=['?'])[["OtherCol"]]

此外,我不明白为什么您需要所有转换为数组和堆叠的操作。为什么不直接将文件读入数据框,然后就地进行所需的操作呢?看起来你只是想做

df['NewColumn'] = df.OtherColumn.fillna(df.OtherColumn.mean())

关于python - 优雅地处理非数字元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com