Python日期时间进程

Python日期时间进程,python,datetime,pandas,Python,Datetime,Pandas,我正在使用Pandas处理我的数据,我的数据如下所示: >>> df = pandas.read_sql('select * from my_table', conn) >>> df time_list open close mkt_cap 0 2007-01-04 4.261631 4.104547 2.745555e+10 1 2007-01-05 4.052185 3.799105

我正在使用
Pandas
处理我的数据,我的数据如下所示:

>>> df = pandas.read_sql('select * from my_table', conn)
>>> df

     time_list       open      close       mkt_cap
0   2007-01-04   4.261631   4.104547  2.745555e+10
1   2007-01-05   4.052185   3.799105  2.541244e+10
2   2007-01-08   3.796196   3.889283  2.601564e+10
3   2007-01-09   3.895101   4.014369  2.685235e+10
4   2007-01-10   4.011460   4.095820  2.739718e+10
5   2007-01-11   4.124909   4.299447  2.875925e+10
6   2007-01-12   4.395443   4.514710  3.019916e+10
7   2007-01-15   4.508892   4.741609  3.171690e+10
8   2007-01-16   4.799789   4.951055  3.311789e+10
9   2007-01-17   4.945237   4.951055  3.311789e+10
10  2007-01-18   4.930692   4.706702  3.148340e+10
11  2007-01-19   4.712520   4.930692  3.298169e+10
12  2007-01-22   4.977235   5.166318  3.455780e+10
13  2007-01-23   5.090685   5.265223  3.521938e+10
14  2007-01-24   5.236133   5.151773  3.446051e+10
15  2007-01-25   5.177954   5.061595  3.385731e+10
16  2007-01-26   5.294312   5.314675  3.555017e+10
17  2007-01-29   5.497940   5.579391  3.732087e+10
18  2007-01-30   5.855742   5.858651  3.918886e+10
19  2007-01-31   6.103004   5.564846  3.722358e+10
20  2007-02-01   5.399035   5.369945  3.591988e+10
21  2007-02-02   5.288494   5.102321  3.412972e+10
22  2007-02-05   5.032506   4.855059  3.247577e+10
23  2007-02-06   4.855059   5.096503  3.409080e+10
24  2007-02-07   5.352492   5.352492  3.580313e+10
25  2007-02-08   5.352492   5.556119  3.716520e+10
26  2007-02-09   5.576482   5.349583  3.578367e+10
27  2007-02-12   5.340856   5.617207  3.757383e+10
28  2007-02-13   5.817926   5.719021  3.825486e+10
29  2007-02-14   5.783018   5.977919  3.998665e+10
..         ...        ...        ...           ...
87  2007-05-21   8.101461   8.101461  5.419115e+10
88  2007-05-22   8.101461   8.101461  5.419115e+10
89  2007-05-23   8.101461   8.101461  5.419115e+10
90  2007-05-24   8.101461   8.101461  5.419115e+10
91  2007-05-25   8.505807   8.505807  5.689584e+10
92  2007-05-28   8.866519   8.319634  5.565051e+10
93  2007-05-29   8.430174   8.366177  5.596185e+10
94  2007-05-30   7.947286   7.947286  5.315986e+10
95  2007-05-31   7.857109   8.345814  5.582564e+10
96  2007-06-01   8.345814   8.345814  5.582564e+10
97  2007-06-04   8.345814   8.345814  5.582564e+10
98  2007-06-05   8.345814   8.345814  5.582564e+10
99  2007-06-06   8.345814   8.345814  5.582564e+10
100 2007-06-07   8.345814   8.345814  5.582564e+10
101 2007-06-08   8.345814   8.345814  5.582564e+10
102 2007-06-11   8.345814   8.345814  5.582564e+10
103 2007-06-12   8.345814   8.345814  5.582564e+10
104 2007-06-13   8.345814   8.345814  5.582564e+10
105 2007-06-14   8.345814   8.345814  5.582564e+10
106 2007-06-15   8.345814   8.345814  5.582564e+10
107 2007-06-18   8.345814   8.345814  5.582564e+10
108 2007-06-19   8.345814   8.345814  5.582564e+10
109 2007-06-20  10.562415   9.983083  6.508599e+10
110 2007-06-21  10.383174  10.981711  7.159668e+10
111 2007-06-22  11.394605  11.330591  7.387125e+10
112 2007-06-25  11.525835  11.266576  7.345389e+10
113 2007-06-26  11.266576  11.266576  7.345389e+10
114 2007-06-27  10.139918  10.312758  6.723535e+10
115 2007-06-28  10.082305   9.647006  6.289490e+10
116 2007-06-29   9.538181   8.808414  5.742759e+10
对于列
close
,我想得到每个月的
第一天和
最后一天的值,并且
第一天在数据框上不是
Jan 1st
,对于
Jan
,它是
2007-01-04
,而
最后一天不是日历上的日期,是数据帧上的日期。对于三月,第一天可能是0302,最后一天可能是0328


这对我来说真的很难,因为
第一天
最后一天
很难获得,因为你无法从日历中获得它们,而我是
熊猫
的新手,所以我只需要你的帮助。你可以发布你的代码,也可以写下你对如何解决它的想法。

groupby是你的解决方案。让我们根据日期创建一个仅包含月份信息的向量,然后使用groupby。正如名字所说,您就有了一组数据,所有数据都在同一个月。最后,通过选择组中的第一个或最后一个进行聚合

key = [x.strftime("%Y%m") for x in df["time_list"]]
open_month = df.groupby(key, as_index=False).first()
close_month = df.groupby(key, as_index=False).last()

或者,您可以在从Python和
pandas
调用SQL语句之前修复SQL语句。