ฉันกำลังพยายามเขียนโค้ดที่แยกข้อมูลเป็นเดือนด้วยนามสกุลmonth_changes. ValuesและVal_datesจะ corelated, Val_datesที่ควรจะเป็นวันที่การจับคู่สำหรับValuesดัชนี [100,'2015-11-01 01:03:00'],[123, '2015-11-08 12:56:00'].....ดังนั้นแต่ละแถวในอาร์เรย์หลายมิติควรเป็นตัวแทนของเดือนเดียว ดังนั้นแถวแรก[100 123. 104.55 107.6865 105.53277 110.8094085 117.45797301]สำหรับเดือนพฤศจิกายน 2015 และแถวที่หก[100,106]คือเดือนกุมภาพันธ์ 2016 เป็นต้น ฉันกำลังพยายามเขียนฟังก์ชันที่วนซ้ำในแถวเดือนด้วย เป็นจำนวนดัชนีที่ถูกต้องสำหรับเดือนนั้นและส่งออกค่าสูงสุด ดังนั้นในเดือนพฤศจิกายน ปี 2015 มี 4 วันที่มีเดือนและปีเดียวกัน['2015-11-01 01:03:00', '2015-11-08 12:56:00', '2015-11-11 02:30:00', '2015-11-14 04:23:00']ดังนั้นเนื่องจากดัชนีที่ 4 อยู่ในแถวแรกสุดจึงส่งออก123ซึ่งเป็นค่าที่มากที่สุดระหว่างดัชนี1-4ดัชนีใน[123. 104.55 107.6865 105.53277]. สำหรับแถวที่ไม่มีวันที่ตรงกันมันจะแสดงผลเป็น 0 resultฟังก์ชันจะแสดงเฉพาะวันสุดท้ายของเดือนฉันจะแก้ไขได้อย่างไรเพื่อให้ได้ผลลัพธ์ที่คาดหวังด้านล่าง คำถามก็เหมือนกับประเด็นนี้ คือปัญหา

import numpy as np 

#[23,10,3,12,5,6]
Values = np.array([[100      123.         104.55       107.6865     105.53277    110.8094085
 117.45797301]
[100.  85.       87.55     85.799    90.08895  95.494287]
[100.  103.      100.94    105.987   112.34622]
[100.   98.    102.9   109.074]
[100.   105.  111.3]
[100.   106.]])

Val_dates= ['2015-11-01 01:03:00', '2015-11-08 12:56:00', '2015-11-11 02:30:00', '2015-11-14 04:23:00', '2016-02-11 02:00:00', '2016-02-15 15:00:00']

month_changes = ['2015-11-01 00:00:00', '2015-12-01 00:00:00', '2016-01-01 00:00:00',
 '2016-02-01 00:00:00', '2016-03-01 00:00:00']

format_month = np.sort(month_changes)

def Monthly_Pnls(index, Values):
    Values = np.array([arr[i:] for i,arr in enumerate(Values.tolist())])
    df = pd.DataFrame({'dt': Val_dates, 'val': Values}).astype({'dt': 'datetime64[ns]'})
    idx = pd.date_range(Date[month_changes][0], Date[month_changes][-1], freq='MS')

    result = df.groupby(pd.Grouper(freq='MS', key='dt'))['val'] \
          .apply(lambda x: x.head(1).squeeze()[len(x)-1] if len(x) else 0) \
          .reindex(idx, fill_value=0) \
          .to_numpy()
    
    return result 

Monthly_Pnls(Val_dates, month_changes)

ผลผลิตที่คาดหวัง:

[123, 0.0, 0.0, 105.0, 0.0]
ไม่พบคำตอบ