【发布时间】:2012-08-24 19:51:05
【问题描述】:
我正在尝试使用 Pandas 读取一个相当大的 CSV 文件并将其分成两个随机块,其中一个是 10% 的数据,另一个是 90%。
这是我目前的尝试:
rows = data.index
row_count = len(rows)
random.shuffle(list(rows))
data.reindex(rows)
training_data = data[row_count // 10:]
testing_data = data[:row_count // 10]
由于某种原因,sklearn 在我尝试在 SVM 分类器中使用这些生成的 DataFrame 对象之一时抛出此错误:
IndexError: each subindex must be either a slice, an integer, Ellipsis, or newaxis
我认为我做错了。有没有更好的方法来做到这一点?
【问题讨论】:
-
顺便说一句,这不会随机正确随机洗牌 - 问题是
random.shuffle(list(rows))。shuffle改变了它所操作的数据,但是当你调用list(rows)时,你复制了一个rows的副本,它被改变然后被丢弃 - 底层的 pandas 系列,rows,没有改变。一种解决方案是调用rows = list(rows),然后调用random.shuffle(rows)和data.reindex(rows)。
标签: python partitioning pandas