我有以下資料框:
Date Name Grade Hobby
01/01/2005 Albert 4 Drawing
08/04/1996 Martha 6 Horseback riding
03/03/2003 Jack 5 Singing
07/01/2001 Millie 5 Netflix
24/09/2000 Julie 7 Sleeping
...
我想過濾 df 只包含重復日期的行,所以 wheredf['Date'].value_counts()>=2
然后 groupby 日期按時間順序排序,這樣我就可以得到類似的東西:
Date Name Grade Hobby
08/08/1996 Martha 6 Horseback riding
Matt 4 Sleeping
Paul 5 Cooking
24/09/2000 Julie 7 Sleeping
Simone 4 Sleeping
...
我嘗試了一些代碼,但我卡在了第一步。我試過類似的東西:
same=df['Date'].value_counts()
same=same.loc[lambda x:x >=2]
mult=same.index.to_list()
for i in df['Date']:
if i not in mult:
df.drop(df[df['Date'==i]].index)
我也試過
new=df.loc[df['Date'].isin(mult)]
plot=pd.pivot_table(new, index=['Date'],columns=['Name'])
但這僅獲得每個重復日期的 1 行,而不是具有相同日期的所有行
uj5u.com熱心網友回復:
按轉換Date為日期時間to_datetime,然后按 過濾行boolean indexing和最后排序DataFrame.sort_values:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
same=df['Date'].value_counts()
df1 = df[df['Date'].map(same) >= 2].sort_values(['Date','Grade'], ascending=[True, False])
或使用Series.duplicatedwith keep=Falsefor count 2 及更多,與重復項相同:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df1 = df[df['Date'].duplicated(keep=False)].sort_values(['Date','Grade'], ascending=[True, False])
uj5u.com熱心網友回復:
認為這應該做的作業
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df_new = df[df['Date'].duplicated(keep=False)].sort_values('Date')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/526489.html
標籤:Python熊猫数据框
上一篇:比較熊貓資料框中每個專案的數量
下一篇:根據子字串獲取資料框單元格值
