假設我有以下代碼
import pandas as pd
dat = pd.DataFrame({'A' : ['2010-01-01', '2011-01-01', '2012-01-01', '2013-01-01'], 'B' : [1,2,3,4]})
start = pd.to_datetime('2011Q1').to_period('Q').start_time
end = pd.to_datetime('2012Q1').to_period('Q').start_time
dat['A1'] = pd.to_datetime(dat['A'])
dat1 = dat[dat['A1'].between(start, end)]
如您所見,在倒數第二行中,我正在創建一個A1具有型別的新列date,在最后一行中,我基于新創建的列進行子集化
我正在尋找某種方法,如何chain rule使用單行代碼執行上述 2 次計算?
任何指標都會非常有幫助
uj5u.com熱心網友回復:
您可以嘗試pipe應用期望 DataFrames 的可鏈接函式。
out = dat.assign(A1=pd.to_datetime(dat['A'])).pipe(lambda df: df[df['A1'].between(start, end)])
print(out)
A B A1
1 2011-01-01 2 2011-01-01
2 2012-01-01 3 2012-01-01
uj5u.com熱心網友回復:
讓我們像這樣使用assign和query:
dat.assign(A1=pd.to_datetime(dat['A'])).query('@start <= A1 <= @end')
輸出:
A B A1
1 2011-01-01 2 2011-01-01
2 2012-01-01 3 2012-01-01
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/461644.html
標籤:python-3.x 熊猫 日期
上一篇:R中的隨機時間戳生成
