แบ่งวันของเดือนในพจนานุกรม Python pandas

Sep 27 2020

ฉันมีรายชื่อหุ้นดังต่อไปนี้:

สำหรับแต่ละคนฉันขอแยกตามวันของเดือนตามรูปวาดอธิบายนี้:

ด้วยการแยกนี้ฉันสามารถทำผลตอบแทนสะสมในแต่ละวันและแยกตามผลตอบแทนสะสมสูงสุดและต่ำสุดสำหรับสัญลักษณ์หุ้นแต่ละตัว

ฉันกำลังทำสิ่งต่อไปนี้ (ตัวอย่างจากรายการหุ้นอื่น) จาก SO: เรียกรายงานจากพจนานุกรมของดาต้าเฟรม :

data_dict = dict()  # create an empty dict here
for k, df in df_dict.items():
    df_dict[k]['Return %'] = df.iloc[:, 0].pct_change(-1)*100

    # aggregate the max and min of Return
    mm = df_dict[k]['Return %'].agg(['max', 'min'])  

    # add it to the dict, with ticker as the key
    data_dict[k] = {'max': mm.max(), 'min': mm.min()}  

# convert to a dataframe if you want
mm_df = pd.DataFrame.from_dict(data_dict, orient='index')

# display(mm_df)
          max      min
aapl  8.70284 -4.90070
msft  6.60377 -4.08443

ส่งผลให้เกิดการวิเคราะห์เชิงเส้นของหุ้นในรายการและไม่แยกตามวันตามที่ฉันต้องการทำตามรูปด้านบน

คำถาม:

  • ฉันจะแทรกขั้นตอนเพื่อแยกตามวันของเดือนแล้วดำเนินการตามโค้ดด้านบนได้อย่างไร

คำตอบ

kyc12 Sep 28 2020 at 23:40

คุณสามารถใช้pandas.groupbyและใช้datetime.date()เป็นฟิลด์การจัดกลุ่ม จากนั้นคุณสามารถใช้sumโอเปอเรเตอร์บนวัตถุกลุ่มเพื่อคำนวณผลตอบแทนรายวัน โพสต์นี้แสดงการใช้groupbyกับวันที่และเวลา