我有一个包含许多行(即 3000 到 4000)的 .csv 文件,其中每行代表一个采样率为 1Hz 的事件。我想创建另一个 .csv,其中每一行代表一个采样率为 0.1Hz 的事件。
换句话说,我希望从分辨率为每秒 1 个事件的 .csv 变为分辨率为每 10 秒 1 个事件的 .csv。
我需要与语言无关的算法的伪代码,但也需要一个实现(最好用 C 语言)。
最佳答案
不太清楚你想用哪种语言来实现它。这是一个与语言无关的计划:
- 询问用户要加载的文件
- 以“读取”方式打开文件
- 以写入模式打开另一个文件
- 逐行迭代读取文件。
- 保留一个计数器,并在每次在循环中读取一行时递增该计数器。
if counter mod 10 == 0
则将该行追加到写入文件中。- 完成后关闭这两个文件。
这是一个更高级别的 python 实现,它使用 pandas 为我们进行低级操作。
import pandas as pd
# Boilerplate to simulate the author initial condition
# Creating a sample CSV file with a 1Hz resolution
df = pd.DataFrame()
df['time'] = pd.date_range(start='2020-01-08', periods=3000, freq='s')
df.to_csv(path_or_buf="input.csv",index=False)
# Read the file
df = pd.read_csv('input.csv')
# Convert to datetime
df['time'] = pd.to_datetime(df['time'])
# Resampling down to 0.1Hz
df = df.resample('10s', on='time').first()
df.to_csv(path_or_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
关于python - 将 CSV 缩减采样 10 倍并将其保存到另一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59377246/