【问题标题】:Making Time Series/ Date DataFrame in pandas在熊猫中制作时间序列/日期数据框
【发布时间】:2020-04-09 18:06:20
【问题描述】:

我有一个包含几个月的日期时间列“A”的文件。我必须限制到 2017 年 8 月,按工作日分组,按总和汇总。将工作日列设置为从一到七的数字。然后将 Weekday 列设置为(行)索引。返回生成的 DataFrame。 我在下面尝试过:

pd.date_range("2017-08-01", "2017-08-31",freq='D').to_series()

y=z.dt.工作日

y

This gives 

2017-08-01 1

2017-08-02    2

2017-08-03 3... 等等,但我无法在我的 jupyter 笔记本中重命名或更改这一列的索引。我该如何解决这个练习。请帮忙。

【问题讨论】:

  • y=z.dt.weekday.rename('new_name').
  • 为什么日期和数字数据都没有出现在不同的列中,以便我可以分别命名它们并将数字列作为索引。
  • 因为您使用的是系列而不是数据框。
  • 有没有类似to_DataFrame()的功能???

标签: python pandas time time-series


【解决方案1】:

IIUC 你想要类似的东西

import numpy as np
import pandas as pd
df = pd.date_range("2017-08-01", "2017-08-31",freq='D')\
       .to_frame(name="date")\
       .reset_index(drop=True)

df["n"] = np.random.randn(len(df))
df["dow"] = df["date"].dt.weekday

df.head()
        date         n  dow
0 2017-08-01  2.104356    1
1 2017-08-02  0.475884    2
2 2017-08-03 -0.849579    3
3 2017-08-04 -0.134266    4
4 2017-08-05 -1.322617    5

然后执行以下groupby

df.groupby("dow")["n"].sum().reset_index()
   dow         n
0    0 -1.579067
1    1  0.793178
2    2 -2.310629
3    3 -2.275956
4    4 -0.091897
5    5 -3.918192
6    6 -2.252314

** 更新 ** 如果您对to_frame 有疑问,您可以将df 定义如下

df = pd.DataFrame({"date": pd.date_range("2017-08-01",
                                         "2017-08-31",
                                         freq='D')})

【讨论】:

  • 谢谢,但代码抛出错误-'DatetimeIndex' 对象没有属性'to_frame'
  • 我猜这取决于 pd.__version__ 你介意分享你的版本吗?
  • 我正在使用 Python 3。
  • 我在问熊猫版本。无论如何,我更新了给你一个错误的部分。看看吧。
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 2021-10-21
相关资源
最近更新 更多