[英]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.