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