熊猫read_csv删除EOF之后的所有行

时间:2020-09-03 08:43:26

标签: python pandas

我正在使用通常的pd.read_csv将csv文件读取到熊猫中。一切正常。但是,我的大多数csv文件在末尾都有一行,其中“ #EOD”作为第一列值来指示该表的最后一行。此后可能会有更多带有“ nan”值的行。

pd.read_csv('test.csv')

Out[1]: 
     A    B      C   D
0   C1    A    0.5   9
1   C2    A    0.2   1
2   C3    A    0.3   7
3   C4    B    0.2   4
4   #EOD  None nan   nan
5   *     None nan   nan

在读取csv时,如何删除“ #EOD”行之后的所有行?我不知道它是否仅在“ #EOD”之后的1行或几行,所以文件与文件之间可能会有所不同。

2 个答案:

答案 0 :(得分:1)

获取最后一个想要的行的索引,并将其用于切片中。 (与Python列表切片不同,{.loc切片包含结束标签)

idx = df.loc[df.iloc[:, 0].shift(-1).eq('#EOD')].index[0]
df.loc[:idx, :]

答案 1 :(得分:1)

尝试一下-首先找到索引“ #EOD”,然后切片。

df[:(df.query("A=='#EOD'")).index.item()]
    A  B    C    D
0  C1  A  0.5  9.0
1  C2  A  0.2  1.0
2  C3  A  0.3  7.0
3  C4  B  0.2  4.0

或将iloc用作常规

df[: df[df.iloc[:,0]=="#EOD"].index[0]]