2 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個贊
你只需要做兩個過濾器;第一個過濾器檢查flag,然后第二個過濾器刪除任何有 after 標(biāo)志的東西:
import pandas as pd
df = pd.DataFrame({'name': ['test1', 'test2', 'test3', 'test1', 'test2'], 'flag':['before', 'before', 'after', 'before', 'after']})
df[~df.name.isin(df[df.flag=='after']['name'])]
name flag
0 test1 before
3 test1 before

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個贊
這是一種使用 的方法.loc[],它可以在某些情況下防止SettingWithCopyWarning警告(這在這里可能不是問題)。
# Find the NAME such that FLAG == After:
after = df.loc[ df['FLAG'] == 'After', 'NAME' ]
# Filter rows (before comma in .loc[]) and select columns (after comma)
before = df.loc[~df['NAME'].isin(after), ['NAME', 'DATE']]
print(before)
NAME DATE
0 Test1 1 April 2020
2 Test1 28 May 2020
添加回答
舉報(bào)