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

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

在 Pandas 數據框中的 2 個日期之間添加日期列

在 Pandas 數據框中的 2 個日期之間添加日期列

元芳怎么了 2021-11-02 10:10:31
我有一個現有的數據框,它看起來像:    id  start_date  end_date0   1   20170601    202105311   2   20181001    202209302   3   20150101    201902283   4   20171101    20211031我正在嘗試向此數據框添加 85 列,它們是:如果月/年(在 start_date 到 end_date 上循環)介于 20120101 和 20190101 之間:1其他:0我嘗試了以下方法:start, end = [datetime.strptime(_, "%Y%m%d") for _ in ['20120101', '20190201']]global_list = list(OrderedDict(((start + timedelta(_)).strftime(r"%m/%y"), None) for _ in range((end - start).days)).keys())def get_count(contract_start_date, contract_end_date):    start, end = [datetime.strptime(_, "%Y%m%d") for _ in [contract_start_date, contract_end_date]]    current_list = list(OrderedDict(((start + timedelta(_)).strftime(r"%m/%y"), None) for _ in range((end - start).days)).keys())    temp_list = []    for each in global_list:        if each in current_list:            temp_list.append(1)        else:            temp_list.append(0)    return pd.Series(temp_list)sample_df[global_list] = sample_df[['contract_start_date', 'contract_end_date']].apply(lambda x: get_count(*x), axis=1)示例 df 如下所示:customer_id contract_start_date contract_end_date   01/12   02/12   03/12   04/12   05/12   06/12   07/12   ... 04/18   05/18   06/18   07/18   08/18   09/18   10/18   11/18   12/18   01/191   1   20181001    20220930    0   0   0   0   0   0   0   ... 0   0   0   0   0   0   1   1   1   19   2   20160701    20200731    0   0   0   0   0   0   0   ... 1   1   1   1   1   1   1   1   1   13   3   20171101    20211031    0   0   0   0   0   0   0   ... 1   1   1   1   1   1   1   1   1   13 rows × 88 columns它適用于小型數據集,但對于 160k 行,即使在 3 小時后也沒有停止。有人可以告訴我更好的方法嗎?當同一客戶的日期重疊時面臨問題。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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