我正在使用通常的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行或几行,所以文件与文件之间可能会有所不同。
答案 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]]