亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按行計算數據框,但按日期時間分組

按行計算數據框,但按日期時間分組

嗶嗶one 2022-06-28 18:10:52
我每天使用多條盤中線來處理時間序列數據。我希望能夠根據僅按天分組的數據做出決策,而不是作為.groupby()目前我正在做一個循環,比如np.unique(df.index.date)每天應用計算,但這在大型數據集上非常耗時。for day in np.unique(df.index.date):    if df[day.strftime("%Y-%m-%d")].count()[0] != 5:        df.drop(df[df.index.date == day].index, inplace=True)一段數據可能如下所示:Date_Time   EB2018-09-13 9:20:00  69.452018-09-13 9:30:00  69.442018-09-13 9:40:00  69.332018-09-13 9:50:00  69.342018-09-13 10:00:00 69.362018-09-14 9:20:00  69.452018-09-14 9:30:00  69.442018-09-14 9:40:00  69.332018-09-14 9:50:00  69.342018-09-14 10:00:00 69.36該代碼正在遍歷每個日期時間并刪除任何沒有 5 行的日期。
查看完整描述

1 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

我認為您應該能夠在不循環 Python 的情況下做到這一點,并通過矢量化命令來利用 C 級速度。制作一系列日期,進行值計數,使用值計數標記要保留的數據,并過濾掉不需要的數據。


# Make a series to use as a mapping for dates which should be kept

dates_with_more_than_5 = df["Date_Time"].dt.date.value_counts() > 4

# Make a column in the DataFrame which indicates which data to keep

df["keeper_data"] = df["Date_Time"].dt.date.map(dates_with_more_than_5).fillna(False)

# Filter the data and drop the keeper "flag" column

df = df[df["keeper_data"].drop(columns="keeper_data"]

你可以用更少的行來做到這一點,但這很容易閱讀。


編輯:另外,我不明白為什么這不能用groupby


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號