Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将CSV减采样10倍并将其保存到另一个文件中_Python_C_Pandas_Csv_Awk - Fatal编程技术网

Python 将CSV减采样10倍并将其保存到另一个文件中

Python 将CSV减采样10倍并将其保存到另一个文件中,python,c,pandas,csv,awk,Python,C,Pandas,Csv,Awk,我有一个包含多行(即3000到4000行)的.csv文件,其中每行代表一个采样率为1Hz的事件。我想创建另一个.csv,其中每一行表示采样率为0.1Hz的事件 换句话说,我想从分辨率为每秒1个事件的.csv转换为分辨率为每10秒1个事件的.csv 我需要一个与语言无关的算法的伪代码,还需要一个实现(最好是C语言)。不太清楚要用哪种语言实现它。以下是一个语言不可知的计划: 要求用户加载文件 以只读方式打开文件 以写模式打开另一个文件 逐行迭代读取文件 保留一个计数器,并在每次读取循环中的一行时递

我有一个包含多行(即3000到4000行)的.csv文件,其中每行代表一个采样率为1Hz的事件。我想创建另一个.csv,其中每一行表示采样率为0.1Hz的事件

换句话说,我想从分辨率为每秒1个事件的.csv转换为分辨率为每10秒1个事件的.csv


我需要一个与语言无关的算法的伪代码,还需要一个实现(最好是C语言)。

不太清楚要用哪种语言实现它。以下是一个语言不可知的计划:

  • 要求用户加载文件
  • 以只读方式打开文件
  • 以写模式打开另一个文件
  • 逐行迭代读取文件
  • 保留一个计数器,并在每次读取循环中的一行时递增它
  • 如果计数器mod 10==0
    则将该行追加到写入文件中
  • 完成后关闭两个文件
下面是一个更高级别的python实现,它使用pandas为我们执行低级操作

将熊猫作为pd导入
#模拟作者初始条件的样板
#创建分辨率为1Hz的示例CSV文件
df=pd.DataFrame()
df['time']=pd.日期\范围(开始时间=2020-01-08',周期=3000,频率=s')
df.to_csv(path_或_buf=“input.csv”,index=False)
#读文件
df=pd.read\u csv('input.csv')
#转换为日期时间
df['time']=pd.to_datetime(df['time'])
#重新采样至0.1Hz
df=df.resample('10s',on='time')。first()
df.to_csv(path_或_buf=“output.csv”,index=False)
这一收益率:

2020-01-08 00:00:00
2020-01-08 00:00:10
2020-01-08 00:00:20
2020-01-08 00:00:30
2020-01-08 00:00:40

您将在所有标记的语言中实现此功能?您是指命令行中的
awk'(NR-1)%10==0'foo.csv
?是awk namefile还是command?@dannyleeploote只需将其破解到您的shellSee中,即可获得基本的CSV解析器。根据需要进行调整。如果可以用C语言,那会更好,因为我在C语言方面的经验更好,但我正在看哪种语言能产生最短的程序!在Python中,这是一个5-6行程序,它是一个1行程序。。。我想知道,为什么OP对此不满意,太简单了Perl也可以在一行中完成;不过,这比Awk版本更难理解。我必须学会那个Awk