我有一個包含 3 列的資料框(id、date1、date2)
data = [['C', '05/06/2021','07/09/2021'],['A', '15/04/2021','08/09/2021'],['A','15/10/2021','09/12/2021'],['C', '03/07/2021','10/09/2021'],['C', '13/07/2021','11/09/2021'],['C', '25/10/2021','12/12/2021'],['C', '26/09/2021','07/12/2021'],['C', '10/08/2021','07/12/2021'],['C', '28/07/2021','13/12/2021'],['A', '15/05/2021','13/12/2021'], ['C', '13/06/2021','13/12/2021'],['A', '17/05/2021','13/12/2021'],['C', '27/06/2021','13/12/2021'], ['B', '18/06/2021','13/12/2021']]
df_test = pd.DataFrame(data, columns = ['id', 'date1', 'date2'])
df_test['date1'] = pd.to_datetime(df_test['date1'],dayfirst=True)
df_test['date2'] = pd.to_datetime(df_test['date2'],dayfirst=True)
我想計算 date2-date1 之間的差異并根據 days filter >=100 計算平均值我有 2 種方法第一個有效,但第二個無效...我該如何解決?
第一個有效
df_final=(df_test
.sort_values(by='id')
.assign(diffe=df_test['date2']- df_test['date1']
)
)
和
test=df_final.loc[df_final['diffe']>=pd.Timedelta(100, 'D')]
test['diffe'].mean()
第二種方法
df_final=(df_test
.sort_values(by='id') # Classe les numeros sont dans l'ordre
.assign(diffe=df_test['date2']- df_test['date1']
)
.loc[df_reservation_delay['diffe']>=pd.Timedelta(100, 'D')]
.mean()
)
我有一個錯誤 (KeyError: 'diffe') ?你有想法嗎 ?
祝你今天過得愉快
uj5u.com熱心網友回復:
您需要使用可呼叫的,因為您的列尚不存在。
此外,最好明確地提供列名loc以避免FutureWarning
FutureWarning:不推薦在 DataFrame 減少中洗掉討厭的列(使用“numeric_only=None”);在未來的版本中,這將引發 TypeError。在呼叫歸約之前僅選擇有效列。
df_final=(df_test
.sort_values(by='id') # Classe les numeros sont dans l'ordre
.assign(diffe=df_test['date2']- df_test['date1']
)
.loc[lambda d: d['diffe']>=pd.Timedelta(100, 'D'), 'diffe']
.mean()
)
輸出:Timedelta('169 days 09:00:00')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/458762.html
標籤:Python python-3.x 熊猫 数据框 约会时间
上一篇:按銷售額和年份計算TopN產品
