我正在嘗試根據月份將具有開始日期和結束日期的行專案劃分為多行。值應根據特定月份的天數計算。
例如,1 個行專案的資料:
| ID | 開始日期 | 結束日期 | 年度的 |
|---|---|---|---|
| 美國廣播公司 | 12/12/2018 | 01/12/2019 | 120,450 |
預期輸出:
| ID | 月 | 年 | 每月交易量 |
|---|---|---|---|
| 美國廣播公司 | 12 | 2018年 | 6,600 |
| 美國廣播公司 | 1 | 2019年 | 10,230 |
| 美國廣播公司 | 2 | 2019年 | 9,240 |
| 美國廣播公司 | 3 | 2019年 | 10,230 |
| 美國廣播公司 | 4 | 2019年 | 9,900 |
| 美國廣播公司 | 5 | 2019年 | 10,230 |
| 美國廣播公司 | 6 | 2019年 | 9,900 |
| 美國廣播公司 | 7 | 2019年 | 10,230 |
| 美國廣播公司 | 8 | 2019年 | 10,230 |
| 美國廣播公司 | 9 | 2019年 | 9,900 |
| 美國廣播公司 | 10 | 2019年 | 10,230 |
| 美國廣播公司 | 11 | 2019年 | 9,900 |
uj5u.com熱心網友回復:
下次你問的時候有幾件事。
- 這是存在現有答案的情況,因此請務必先嘗試 google 以減少重復。下面的代碼中參考了其他帖子。
- 您還應該始終包含您已經嘗試過的代碼,所以不喜歡做功課,但我們會幫助您。
- 您應該包含一個更容易復制的資料幀。我不應該復制粘貼來構建它,如下面的代碼所示。
- 你顯然正在做一些事情來將年度總量轉換為月量,但你沒有解釋這一點,所以不要指望它會為你完成。
- 最后,此代碼不會轉換為單獨的月份和年份列,但是一旦您有了日期,這對您來說應該是微不足道的(或谷歌如何做)。
import pandas as pd
df = pd.DataFrame(
data = [['abc','12/12/2018','12/01/2019',120450]],
columns = ['id', 'startDate', 'EndDate', 'Annual']
)
df['startDate'] = pd.to_datetime(df['startDate'])
df['EndDate'] = pd.to_datetime(df['EndDate'])
# pd.bdate_range(start="2020/12/16", end="2020/12/26", freq="C", weekmask="Sat Sun")
# %%
df_start_end = df.melt(id_vars=['id', 'Annual'],value_name='date')
# credit to u/gen
# https://stackoverflow.com/questions/42151886/expanding-pandas-data-frame-with-date-range-in-columns
df = (
df_start_end.groupby('id')
.apply(lambda x: x.set_index('date')
.resample('M').pad())
.drop(columns=['id','variable'])
.reset_index()
)
print(df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313018.html
上一篇:如何按多列的值重復行并劃分回來
下一篇:將寬資料合并為長數??據幀格式R
