【发布时间】:2015-07-22 14:45:29
【问题描述】:
这有点复杂,我非常感谢任何帮助!我正在尝试从 .csv 文件中随机抽样行。本质上,我想要一个包含唯一位置的结果文件(位置由数据文件的Easting 和Northing 列指定,如下)。我想在此文件中每个SessionDate 每 12 小时期间随机拉 1 个位置(12 小时期间分为:0631 和 1829 小时之间以及 1830 和 0630 小时之间;给定为 Start:和End: 在下面的数据文件中);但是,如果任何 2 个位置彼此相隔 6 小时内(基于它们的Start: 时间),则该位置将被抛出,并随机抽取一个新位置,并且此采样将继续进行,直到没有新位置被绘制(即,不更换采样)。我一直在尝试用 python 做到这一点,但我的经验非常有限。我尝试先将每一行放入字典,最近将每一行放入一个列表,如下:
import random
import csv
f = open('file.csv', "U")
list = []
for line in f:
list.append(line.split(','))
我不确定从这里去哪里 - 如何以我需要的方式从这些列表中取样,然后用我的“唯一”位置将它们写入输出文件。
这是我的数据文件的前几行:
SessionDate Start: End: Easting Northing
27-Apr-07 18:00 21:45 174739 9785206
28-Apr-07 18:00 21:30 171984 9784738
28-Apr-07 18:00 21:30 171984 9784738
28-Apr-07 18:00 21:30 171984 9784738
28-Apr-07 18:00 21:30 171984 9784738
由于一些观察跨越午夜,所以有点复杂,所以它们可能在不同的日期,但可以在 6 小时之内(这就是我有这个标准的原因),例如:
SessionDate Start: End: Easting Northing
27-Apr-07 22:30 23:25 171984 9784738
28-Apr-07 0:25 1:30 174739 9785206
【问题讨论】:
-
你的 csv 文件中的每一个交替行真的是一个空行吗?
-
CSV 文件有多大——即有多少条目?我们说的是几百?数千?百万?
-
行是否以某种方式排序? (例如
SessionDate) -
不,我的 CSV 文件中没有空行,我无法清楚地显示它。这些文件的大小从几百行到几千行不等。
-
行没有排序,但我可以在处理之前轻松排序。
标签: python csv random sampling