在pandas df中添加一个'now' timestamp列

pgvzfuti  于 2023-05-12  发布在  其他
关注(0)|答案(2)|浏览(145)

我有以下代码:

s1 = pd.DataFrame(np.random.uniform(-1,1,size=10))
s2 = pd.DataFrame(np.random.normal(-1,1, size=10))
s3 = pd.concat([s1, s2], axis=1)
s3.columns = ['s1','s2']

它会生成一个DF,如下所示:

s1          s2
0   -0.841204   -1.857014
1    0.961539   -1.417853
2    0.382173   -1.332674
3   -0.535656   -2.226776
4   -0.854898   -0.644856
5   -0.538241   -2.178466
6   -0.761268   -0.662137
7    0.935139    0.475334
8   -0.622293   -0.612169
9    0.872111   -0.880220

我如何添加一个列(或替换索引0-9),由一个时间戳与现在的时间?np数组的大小不总是10

kx7yvsdv

kx7yvsdv1#

您可以使用datetime的now方法来创建时间戳,并将其分配给新列,如:s3['new_col'] = dt.datetime.now()或直接赋值给索引:

In [9]:

import datetime as dt
s3.index = pd.Series([dt.datetime.now()] * len(s3))
s3
Out[9]:
                                  s1        s2
2014-08-17 23:59:35.766968  0.916588 -1.868320
2014-08-17 23:59:35.766968  0.139161 -0.939818
2014-08-17 23:59:35.766968 -0.486001 -2.524608
2014-08-17 23:59:35.766968  0.739789 -0.609835
2014-08-17 23:59:35.766968 -0.822114 -0.304406
2014-08-17 23:59:35.766968 -0.050685 -1.295435
2014-08-17 23:59:35.766968 -0.196441 -1.715921
2014-08-17 23:59:35.766968 -0.421514 -1.618596
2014-08-17 23:59:35.766968 -0.695084 -1.241447
2014-08-17 23:59:35.766968 -0.541561 -0.997481

注意,由于赋值的分辨率和速度,你会在索引中得到很多重复的值,不知道这有多有用,在我看来,最好把它作为一个单独的列。

kmpatx3s

kmpatx3s2#

如果你使用Pandas DataFrame,那么最有用的是使用pandas专用的方法:pandas.Timestamp:https://pandas.pydata.org/docs/reference/api/pandas.Timestamp.html
在您的示例中,代码如下:s3['date_time'] = pd.Timestamp("now")
所以整个代码应该是这样的:

import pandas as pd
import numpy as np

s1 = pd.DataFrame(np.random.uniform(-1,1,size=10))
s2 = pd.DataFrame(np.random.normal(-1,1, size=10))
s3 = pd.concat([s1, s2], axis=1)
s3.columns = ['s1','s2']
s3['date_time'] = pd.Timestamp("now")

并且其应产生如下表:

s1        s2                  date_time
0 -0.166461 -1.709434 2023-05-10 18:12:30.622377
1  0.551211 -1.019878 2023-05-10 18:12:30.622377
2 -0.153177 -2.118046 2023-05-10 18:12:30.622377
3 -0.892176  0.234402 2023-05-10 18:12:30.622377
4 -0.877010 -1.237897 2023-05-10 18:12:30.622377
5  0.832463 -1.347766 2023-05-10 18:12:30.622377
6  0.930635 -0.010796 2023-05-10 18:12:30.622377
7 -0.506520 -0.128792 2023-05-10 18:12:30.622377
8  0.477318 -1.071283 2023-05-10 18:12:30.622377
9 -0.387735  0.268798 2023-05-10 18:12:30.622377

相关问题