如何根据条件删除 pandas 中的前 n 行,保持数据帧的其余部分完好无损

问题描述 投票:0回答:1

当我不知道有多少行时,如何根据 pandas 数据框中第一个数据行的条件删除前 n 行,而使数据框的其余部分保持不变? 比如说,我想根据第一个记录的第二个内容删除以下示例中的所有前 n 行。时间戳的数量不是恒定的。

代码:

import pandas as pd
from datetime import datetime
# sample dataframe
d = {(0) : [pd.DatetimeIndex([datetime.strptime(s, '%Y-%m-%d %H:%M:%S')])[0] 
                            for s in ['2001-12-23 01:23:59',
                                      '2001-12-23 01:23:59',
                                      '2001-12-23 01:23:59',
                                      '2001-12-23 01:24:00',
                                      '2001-12-23 01:24:00',
                                      '2001-12-23 01:24:01',
                                      '2001-12-23 01:24:02',
                                      '2001-12-23 01:24:02'
                                      ]],
                            (1) : [10,11,12,13,14,15,16,17]
                            }

df1 = pd.DataFrame(data=d)
# obtain first second from timestamp column
sec_1 = df1[0].head(1).dt.second

我知道如何过滤整个时间戳列,我正在努力按照描述过滤掉。 我正在研究 concat 和 iloc,但 iloc 在新的 pandas 中已被弃用。

python pandas dataframe
1个回答
0
投票

所以首先找到满足条件的第一行的索引,您可以使用.idxmax(),然后您可以使用.iloc()从索引开始对数据帧进行切片并重新分配它。例如,如果要删除行直到时间戳列中第一次出现某个秒,则可以执行 df1 = df1.iloc[df1[0].dt.second.idxmax():]。这将保留从第二次第一次出现的索引开始的所有行。

© www.soinside.com 2019 - 2024. All rights reserved.