我有一个非常简单的 Pandas DataFrame,格式如下:
date P1 P2 day
2015-01-01 190 1132 Thursday
2015-01-01 225 1765 Thursday
2015-01-01 3427 29421 Thursday
2015-01-01 945 7679 Thursday
2015-01-01 1228 9537 Thursday
2015-01-01 870 6903 Thursday
2015-01-02 785 4768 Friday
2015-01-02 1137 7065 Friday
2015-01-02 175 875 Friday
Run Code Online (Sandbox Code Playgroud)
其中 P1 和 P2 是不同的感兴趣参数。我想为每个 P1 和 P2创建一个看起来像这样的条形图。如数据所示,我每天都有几个值。我想平均给定日期的给定值,然后针对星期几进行绘制(以便将第 1 周星期一的平均值添加到第 2 周星期一等)。
我是 python 的新手,我目前的方法很糟糕,涉及几个循环。我目前有两个专用的代码部分 - 一个用于计算平均值,另一个用于一次完成一周中的每一天并计算绘图结果。有没有更干净的方法来做到这一点?
我正在尝试在Pandas中构造一个datetime列,该列代表描述年,月,日等的多个列。我在该主题上可以找到的其他大多数答案都涉及相反方向的处理数据(从datetime到integer hour,对于实例)。
df = pd.DataFrame()
df['year'] = [2019, 2019, 2019, 2019, 2019, 2019]
df['month'] = [8, 8, 8, 8, 8, 8]
df['day'] = [1, 1, 1, 1, 1, 1]
df['hour'] = [10,10,11,11,12,12]
df['minute'] = [15,45,20,40,10,50]
df['second'] = [0, 1, 5, 10, 10, 11]
Run Code Online (Sandbox Code Playgroud)
目标:
df['datetime_val'] =
0 2019-08-01 10:15:00
1 2019-08-01 10:45:01
2 2019-08-01 11:20:05
3 2019-08-01 11:40:10
4 2019-08-01 12:10:10
5 2019-08-01 12:50:11
Name: datetime_vals, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如何快速创建一个代表组成时间信息的datetime列?我可以使用.apply()和一个辅助函数轻松地做到这一点,但我设想对数百万行执行此操作。我喜欢内置/矢量化的东西。谢谢!