我試圖通過用前面的行值填充其他列,將pandas中每個唯一id的四分位數轉換為月份。我看過這個Pandas:為缺失的月份添加數據,但它只針對一個id(它不適用于多個id),如果我們有多個id,我們怎么能做同樣的事情?例如,我有這樣一個數據
import numpy as np
import pandas as pd
index = [0,1,2,3]
id = pd.Series([1,1,2,2],index= index)
price = pd.Series([20,41,61,68],index= index)
date_month = pd.Series(['2021-01','2021-04','2021-01','2021-04'],index= index)
df = pd.DataFrame(id,columns = ["id"])
df["price"] =price
df['date_month'] = date_month
df
但我希望輸出如下
index = [0,1,2,3,4,5, 6, 7,8,9,10,11]
id = pd.Series([1,1,1,1,1,1,2, 2, 2,2,2,2],index= index)
price = pd.Series([20,20,20, 41,41,41, 61,61, 61, 68,68,68],index= index)
date_month = pd.Series(['2021-01', '2021-02','2021-03', '2021-04', '2021-05','2021-06','2021-01', '2021-02', '2021-03','2021-04', '2021-05','2021-06'],index= index)
df = pd.DataFrame(id,columns = ["id"])
df["price"] =price
df['date_month'] = date_month
df
僅供參考,還有其他列,我們希望用每個季度第一個月的值填充。
首先,創建一個日期范圍數據框,其中包含從最小月份到最大月份的月份。
然后,基于
date_range_df
創建一個季度月映射數據幀reuslt將是
最后,您可以將
quarter_month_map_df
與原始df
合并