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

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

我如何在熊貓的幾個月之間分配價值?

我如何在熊貓的幾個月之間分配價值?

慕哥9229398 2022-11-29 15:32:08
我有以下數據框:    start_date delta       2018-06-30  2        2018-06-30  2        2018-06-30  2        2018-06-30  2        2018-06-30  4        2018-07-31  4        2018-07-31  2        2018-07-31  6   我會得到這樣的數據框:start-date delta2018-06-30   12018-07-31   12016-06-30   12016-07-31   1 ...# (there was 2018-06-30 with delta = 4)2018-06-30   12018-07-31   12018-08-30   12018-09-30   1 and so on...我不需要空格,它只是為了可視化。所以我每個月都需要擴展 delta。在輸出中,delta 列的每個值都必須等于 1。我該怎么做?
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

如果我理解正確的話,“delta”列中的每個值都是從“start_date”開始的月數。在結果中,“delta”列必須只包含一個,所以它并不重要,可以稍后添加??紤]到“start_date”列中的值是 datetime64 類型,這是我想出的:


np.hstack((df.apply(lambda row: pd.date_range(row['start_date'], periods=row['delta'], freq='m'), axis=1).values))

此代碼轉換問題中的數據框:


  start_date  delta

0 2018-06-30      2

1 2018-06-30      2

2 2018-06-30      2

3 2018-06-30      2

4 2018-06-30      4

5 2018-07-31      4

6 2018-07-31      2

7 2018-07-31      6

進入一維日期數組:


array(['2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000',

       '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000',

       '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000',

       '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000',

       '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000',

       '2018-08-31T00:00:00.000000000', '2018-09-30T00:00:00.000000000',

       '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000',

       '2018-09-30T00:00:00.000000000', '2018-10-31T00:00:00.000000000',

       '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000',

       '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000',

       '2018-09-30T00:00:00.000000000', '2018-10-31T00:00:00.000000000',

       '2018-11-30T00:00:00.000000000', '2018-12-31T00:00:00.000000000'],

      dtype='datetime64[ns]')

可用于創建新數據框,即:


df2 = pd.DataFrame()

df2['start_date'] = np.hstack((df.apply(lambda row: pd.date_range(row['start_date'], periods=row['delta'], freq='m'), axis=1).values))

df2['delta'] = 1


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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