我有一個 df,您可以通過復制此代碼來獲取它:
from io import StringIO
df = """
RateCompany gs RB ValIssueDate
115 T G 54 19580101
116 T G 54 19870101
336 T S 54 19580101
337 T S 54 19870101
338 T j 53 19970101
"""
df = pd.read_csv(StringIO(df.strip()), sep='\s ')
現在我想洗掉所有具有相同 RateCompany,gs,RB 的行,但 ValIssueDate 大于其他行。
輸出應該是:
RateCompany gs RB ValIssueDate
115 T G 54 19580101
336 T S 54 19580101
338 T j 53 19970101
有朋友可以幫忙嗎?
uj5u.com熱心網友回復:
按要比較的列排序,然后在關鍵列上使用 drop_duplicates:
df.sort_values('ValIssueDate').drop_duplicates(['RateCompany', 'gs', 'RB'])
輸出:
RateCompany gs RB ValIssueDate
115 T G 54 19580101
336 T S 54 19580101
338 T j 53 19970101
uj5u.com熱心網友回復:
這是另一種使用方式 idxmin()
df.loc[df.groupby(['RateCompany', 'gs', 'RB'])['ValIssueDate'].idxmin()]
RateCompany gs RB ValIssueDate
115 T G 54 19580101
336 T S 54 19580101
338 T j 53 19970101
uj5u.com熱心網友回復:
你可以使用groupby同min:
>>> df.groupby(["RateCompany", "gs", "RB"], as_index=False)["ValIssueDate"].min()
RateCompany gs RB ValIssueDate
0 T G 54 19580101
1 T S 54 19580101
2 T j 53 19970101
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349888.html
上一篇:用dplyr比較兩列串列型別行
下一篇:檢查在行級別僅填充一列的簡潔方法
