首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas read_csv -跳过从某一行开始的每隔一行

pandas read_csv -跳过从某一行开始的每隔一行
EN

Stack Overflow用户
提问于 2019-02-25 23:03:40
回答 1查看 446关注 0票数 0

我有一个巨大的.csv文件(超过100万行),我正试图使用pandas read_csv函数解析它。该文件非常大,因为它是来自具有非常高采样率的传感器的测量数据,我想从其中获取下采样的片段。我尝试使用一个lambda函数以及skiprowsnrows参数来实现它。我的代码目前所做的是,它只是一遍又一遍地读取相同的片段。

代码语言:javascript
复制
segment_amt = 20 # How many segments we want from a individual measurement file
segment_length = 5 # Segment length in seconds
segment_length_idx = fs * segment_length # Segmenth length in indices
segment_skip_length = 10 # How many seconds between segments
segment_skip_idx = fs * segment_skip_length # The amount of indices to skip between each segment
downsampling = 2 # Factor of downsampling

idx = start_idx
for i in range(segment_amt):

    cond = lambda x: (x+idx) % downsampling != 0
    data = pd.read_csv(filename, skiprows=cond, nrows = segment_length_idx/downsampling,
           usecols=[z_component_idx],names=["z"],engine='python')
    M1_df = M1_df.append(data.T)
    idx += segment_skip_idx

这会产生类似于this的结果。我假设这种行为是由lambda函数造成的,但我不知道如何修复它,所以它每次都会基于idx更改开始行(这就是我目前认为它会做的事情)。

EN

回答 1

Stack Overflow用户

发布于 2019-02-26 00:27:43

您的cond lambda错误。如果为x < idxx % downsampling != 0,则希望跳过行。就这样写吧:

代码语言:javascript
复制
cond = x < idx or x % downsampling != 0

但是,您还应该考虑传递header = False,以避免将每个段的第一行处理为标头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54869061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档