繁体   English   中英

Pandas read_csv():保持 header 然后在从文件中读取时跳过行?

[英]Pandas read_csv(): keeping the header and then skip rows when reading in from file?

我想读取输入文件的每 500 行。

My idea was using a lambda function to create my booleans with: skiprows = lambda x: 0 != x%500 This works fine, but also skips my first line, which I want to keep as header.

我尝试使用read_csv()中的header参数解决此问题,但无法弄清楚。

我的代码:

tsteps = [ 12500, 25000, 50000 ,100000, 200000, 400000, 800000, 1600000, 3200000 ]

list_of_data = [pd.read_csv("../data/gauss_wf_fixed_wall6_129_1_{}_1_3_30_6_1.txt".format(i), sep="\t", header=0 ,skiprows = lambda x: 0 != x%500) for i in tsteps ]

当前 Output:

   3.9920000000000004e-02  2.2889406468048764e-314  1.9631275851119487e-01  \
0                 0.08000            2.288941e-314                0.196313   
1                 0.12008            2.288941e-314                0.196313   
2                 0.16016            2.288941e-314                0.196313   
3                 0.20024            2.288941e-314                0.196313   
4                 0.24032            2.288941e-314                0.196313   ...

想要 Output :(类似)

      time   REAL(psi[n])  IMAG(psi[n])      averx    deltax     averp  \
0  0.00000  2.328125e-314      0.000000  30.000020  5.999985  0.838554   
1  0.00004  2.328125e-314      0.196313  30.000034  5.999985  0.838554   
2  0.00008  2.328125e-314      0.196313  30.000048  5.999985  0.838554   
3  0.00012  2.328125e-314      0.196313  30.000063  5.999985  0.838554   
4  0.00016  2.328125e-314      0.196313  30.000077  5.999985  0.838554   

在应用skirows之前是否有办法调用skip header? (因为 skiprows 跳过文件中的所有行)

提前致谢。

我们可以通过强制保留第一行,然后将剩余的行上移1,然后应用取模运算符来达到效果。 'keep' 是要保留的行,然后我们在 lambda 函数中将其取反。

def keep(x):
    if x==0:
        return True
    if (x-1) % 500 ==0:
        return True

df=pd.read_csv("ummh.csv", header=0, skiprows=lambda x: not keep(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM