【问题标题】:Pandas- increment (Year, Month) multiindex and Year & Month columnsPandas-增量(年,月)多索引和年和月列
【发布时间】:2019-05-22 08:04:57
【问题描述】:

使用数据框 df 喜欢:

           YEAR     MONTH     VALUE
(2017,1) 2017        1          1
(2017,2) 2017        2          1
(2017,3) 2017        3          1

如何在数据帧上自动生成新的增量行,例如:

       YEAR     MONTH     VALUE
(2017,1) 2017        1          1
(2017,2) 2017        2          1
(2017,3) 2017        3          1
(2017,4) 2017        4          1
(2017,5) 2017        5          1
(2017,6) 2017        6          1

我看到可以通过创建熊猫系列并将其附加到df 来添加新行,但我有很多行要添加,这种方法看起来超级手动。

我已将 MONTHYEAR 设置为 datetime 使用

df["MONTH"]=pd.to_datetime(df["MONTH"], format='%m')
df["YEAR"]=pd.to_datetime(df["YEAR"], format='%Y')

但我不确定如何在现有数据帧上自动增加新行。

【问题讨论】:

  • 有停止条件吗?或者你想什么时候停止增量?
  • 理想情况下我想添加 12 行(未来每个月 1 行),我想将新行传递到预测模型中

标签: python-3.x pandas datetime dataframe multi-index


【解决方案1】:

你可以试试这个

import dateutil.relativedelta

last_row = df.iloc[-1]
last_value = last_row['VALUE'] # or change it
last_date = datetime.datetime(last_row['YEAR'], last_row['MONTH'], 1)


t = [last_date + dateutil.relativedelta.relativedelta(months = k + 1) for k in range(12)]
df1 = [{'YEAR' : k.year, 'MONTH' : k.month, 'VALUE' : last_value} for k in t]
df1 = pandas.DataFrame(df1, index = [(k.year, k.month) for k in t])

dfnew = df.append(df1)

print(dfnew)


            MONTH  VALUE  YEAR
(2017, 1)       1      1  2017
(2017, 2)       2      1  2017
(2017, 3)       3      1  2017
(2017, 4)       4      1  2017
(2017, 5)       5      1  2017
(2017, 6)       6      1  2017
(2017, 7)       7      1  2017
(2017, 8)       8      1  2017
(2017, 9)       9      1  2017
(2017, 10)     10      1  2017
(2017, 11)     11      1  2017
(2017, 12)     12      1  2017
(2018, 1)       1      1  2018
(2018, 2)       2      1  2018
(2018, 3)       3      1  2018

​

【讨论】:

  • 这个练习需要做的工作比我想象的要多得多,而且以我的技能我不可能做到。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-06-04
  • 2021-10-16
  • 2013-02-12
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多