Pandas:删除column中两个特定字符串之间的所有行,但仅当该行满足特定条件时



我有一个这样的表:

<表类> 事件价值 tbody><<tr>种子57ghy869回购5324回购空回购空反式32哈里12weig6995回购45回购空

我想你可以这样做(MWE):

import pandas as pd
from io import StringIO
my_file = '''event  value
seed    57
ghy 869
repo    5324
repo    null
repo    null
trans   32
harv    12
weig    6995'''
df = pd.read_csv(StringIO(my_file), sep='t')
df = df.drop(df.set_index('event')
.loc['seed':'trans'].reset_index()
.query('(event == "repo")&(value == value)').index)

假设你的DataFramedf,那么:

mask = df.values.notnull() & (df.event == 'repo') # notnull 'repo' values
mask[-2] = False # to not drop the last two rows
df_result = df[~mask] # keep the rows that does not match the conditions

我不确定,因为我没有你的数据,但这个想法是使用布尔数组(mask)来过滤行(不)想要的。

最新更新