第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在每次重復中選擇滿足條件的 ID

在每次重復中選擇滿足條件的 ID

郎朗坤 2023-08-22 17:49:58
我想從列 ID 中選擇那些已完成的唯一元素。每個ID代表一個任務并且可以出現(xiàn)多次。僅當狀態(tài)列每行的值為 100 時,任務才完成。數(shù)據(jù)集示例:import pandas as pddf = pd.DataFrame(data= {'ID': ['A', 'A', 'B', 'B', 'C', 'D'], 'Status': [100, 100, 100, 25, 100, 34]})預期結果:  ID  Status0  A     1004  C     100A:出現(xiàn)兩次,100。A完成B:出現(xiàn)兩次,但其中一次是 25。B 不完整C:以100出現(xiàn)一次。C完成D:與34一起出現(xiàn)一次。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又大,簡單高效是最受歡迎的。
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

這似乎是一個很好的用例groupby。這里有幾個例子:


df.groupby("ID").apply(lambda df: (df.Status == 100).all())


這給出了每個 ID 的布爾狀態(tài):


ID

A     True

B    False

C     True

D    False

如果可以依賴平均值,則另一種選擇:


df.groupby("ID").mean().pipe(lambda df: df[df.Status == 100])


這給出了結果:


ID  Status

A   100.0

C   100.0


查看完整回答
反對 回復 2023-08-22
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

有很多方法可以做到。


選項1


groupby()并過濾掉min==100


df.groupby('ID')['Status'].min()[lambda x:x==100].reset_index()


ID  Status

0  A     100

1  C     100

選項 2 過濾IDs任何Status不等于100并index使用提取它們groupby(),filter(boolean selection)


.isin使用反向查詢drop duplicates從結果中排除選定的索引


s=df.loc[df.groupby('ID')['Status'].filter(lambda x:(x!=100).any()).index,:]

df[~df.index.isin(s.index)].drop_duplicates()



   ID  Status

0  A     100

4  C     100


查看完整回答
反對 回復 2023-08-22
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

考慮到變量是一種狀態(tài),我假設它只存在于 [0,100]?如果是這樣,該 ID 的最低狀態(tài)必須為 100。


import pandas as pd

df = pd.DataFrame(data= {'ID': ['A', 'A', 'B', 'B', 'C', 'D'], 'Status': [100, 100, 100, 25, 100, 34]})

df_completed=df.groupby(['ID']).min()==100 #gives True/False for each ID.

df_completed=df_completed[df == True].dropna()*100 #essentially just formatting

輸出:


    Status

ID

A    100.0

C    100.0


查看完整回答
反對 回復 2023-08-22
  • 3 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號