簡體   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