首页 > 解决方案 > 将日期时间戳作为列附加到 Python 中的现有 DataFrame

问题描述

在电源双

  1. 结合两个 power bi 查询 - 一个带有数据,一个带有 DateTime 戳文本字符串
  2. 填写日期时间字段 - 添加自定义列,

我试图在 python 的数据框中实现同样的目标,但没有运气!

任何帮助是极大的赞赏。

我得到的错误如图所示。 日期时间戳作为附加列

我的代码:

import requests
    import pandas as pd
    import time
    from time import gmtime, strftime
    import datetime
    from datetime import datetime

class NseIndia2:

    def __init__(self):
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
        self.session = requests.Session()
        self.session.get("http://nseindia.com", headers=self.headers)


    def get_option_chain(self, symbol, indices=False):
        if not indices:
            url = 'https://www.nseindia.com/api/option-chain-equities?symbol=' + symbol
        else:
            url = 'https://www.nseindia.com/api/option-chain-indices?symbol=' + symbol
           
        time = self.session.get(url,headers=self.headers).json()["records"]['timestamp']       
#         output 28-Oct-2021 13:16:44
#         print(time)
#         web_datetime = datetime.strptime(time,'%d-%b-%Y %H:%M:%S')
#         print(dtm)
#         output 2021-10-28 13:58:45
        
        data = self.session.get(url,headers=self.headers).json()["records"]["data"]
        
        
        my_df = []
        for i in data:
            for k, v in i.items():
                if k == "CE" or k == "PE":
                    info = v
                    info["instrumentType"] = k
                    my_df.append(info)
        return pd.DataFrame(my_df)


nse = NseIndia2()

##print(nse.get_stock_info("RELIANCE"))
df= (nse.get_option_chain("NIFTY",indices=True))

df.loc[:,"recordedat"] = time.time() ##?This is where i need web's date-time details instead of sciencitfic number

##print(df)
print(df["recordedat"])
Print(df)

标签: pythonpandasdataframejupyter-notebookappend

解决方案


您只是忘记()执行功能time()- 或者更确切地说time.time()

df.loc[:, "Timestamp"] = time.time()  

编辑:

如果你想要正常的时间和日期,那么只需使用 `datetime

df.loc[:, "Timestamp"] = datetime.datetime.now()

顺便提一句:

你可以写得更短

df["Timestamp"] = datetime.datetime.now()

推荐阅读