dataframe 实现每隔 n 行取 1 行
近期在做数据分析的时候,用到了对csv文件每隔n行取1行的操作,正常情况下会立马想到for循环,可能大家还会有其他方法,这里只介绍我能够想到的方法,如下
import pandas as pd
df = pd.read_csv('diaoyan.csv',header=None)
a=[]
for i in range(0,len(df),86):##每隔86行取数据
a.append(i)
file = df.iloc[a]
file
但是最近看到了pandas的read_csv方法里的skiprows参数后,突然有了灵感,感觉可以简化上述循环,然后就尝试了一下,果然特别方便的达到了我想要的效果(每隔86行取1行),代码如下:
import pandas as pd
diaoyan=pd.read_csv('diaoyan.csv',header = None,skiprows=lambda x: x > 0 and x % 86 != 0)
# series = series[::86]
diaoyan
# 将列中的时间列设置为 index
# 注意如果 date 不是时间格式,用 pd.to_datetime 转换
t.set_index("date")
t.resample('10min',closed='right').last()
closed 参数
其实这个参数是针对聚合运算的, closed = ‘left’ 表示左闭右开。
还有一种方式
参考 https://tensorflow.google.cn/tutorials/structured_data/time_series
df = pd.read_csv(csv_path)
# Slice [start:stop:step], starting from index 5 take every 6th record.
df = df[5::6]
date_time = pd.to_datetime(df.pop('Date Time'), format='%d.%m.%Y %H:%M:%S')
[1] dataframe 实现每隔n行取1行 2021.11;
[2] pandas 将数据等时间间隔采样(下采样): resample 2022.6;