2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
要獲取列的第一個(gè)和最后一個(gè)元素,您的選擇已經(jīng)是最有效/正確的方法。
為了獲得第一行,我個(gè)人更喜歡使用 DataFrame.head(1),因此對(duì)于您的代碼,如下所示:
df_first_row ?= sub_df.head(1)
我沒有研究 head() 方法在 Pandas 中是如何定義的及其性能影響,但在我看來,它提高了可讀性并減少了與索引的一些潛在混淆。
在其他示例中,您可能還會(huì)找到sub_df.iloc[0]
,但此選項(xiàng)將返回 ,pandas.Series
其中包含 DataFrame 列名稱的索引。?sub_df.head(1)
將返回一個(gè) 1 行 DataFrame,其結(jié)果與sub_df.iloc[0:1,:]

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
你的出路要么是groupby().agg要么df. agg
如果您需要它,您可以根據(jù)設(shè)備
#sub_df.groupby('device_id')['upload_time_add_8hour'].agg(['first','last'])
sub_df.groupby('device_id')['upload_time_add_8hour'].agg([('upload_time_add_8hour_first','first'),('upload_time_add_8hour_last ','last')]).reset_index()
device_id upload_time_add_8hour_first upload_time_add_8hour_last
0 1101 10/1/2020 0:03 10/7/2020 13:04
如果您不希望按照設(shè)備使用它,也許可以嘗試
sub_df['upload_time_add_8hour'].agg({'upload_time_add_8hour_first': lambda x: x.head(1),'upload_time_add_8hour_last': lambda x: x.tail(1)})
upload_time_add_8hour_first 0 10/1/2020 0:03
upload_time_add_8hour_last 19 10/7/2020 13:04
添加回答
舉報(bào)