我想从列 ID 中选择那些已完成的唯一元素。每个ID代表一个任务并且可以出现多次。仅当状态列每行的值为 100 时,任务才完成。数据集示例:
import pandas as pd
df = pd.DataFrame(data= {'ID': ['A', 'A', 'B', 'B', 'C', 'D'], 'Status': [100, 100, 100, 25, 100, 34]})
预期结果:
ID Status
0 A 100
4 C 100
A:出现两次,100。A完成
B:出现两次,但其中一次是 25。B 不完整
C:以100出现一次。C完成
D:与34一起出现一次。D不完整。
这是我到目前为止的工作:
df_completed = df[df['Status']==100].drop_duplicates()
df_filtered = df[df.ID.isin(df_completed.ID) & (df.Status<100)]
df_completed = df_completed[~df_completed.ID.isin(df_filtered.ID)]
正如您所看到的,我能够产生正确的结果,但我想知道是否有一种不太复杂的方法来做到这一点。而且代码是要共享的,df又大,简单高效是最受欢迎的。
侃侃尔雅
皈依舞
饮歌长啸
相关分类