【问题标题】:Append Date Timestamp as a column to existing DataFrame in Python将日期时间戳作为列附加到 Python 中的现有 DataFrame
【发布时间】:2021-12-12 12:18:00
【问题描述】:

在权力bi

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

我正在尝试在 python 的数据框中实现同样的效果,但没有运气!

非常感谢任何帮助。

我得到的错误如图所示。 datetime stamp as appended column

我的代码:

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)

【问题讨论】:

  • 始终将代码、数据和完整的错误消息作为文本(不是屏幕截图,不是链接)放在有问题的地方(不在评论中)。
  • 您似乎忘记了() 来执行函数——比如time()。或者更确切地说是time.time()

标签: python pandas dataframe jupyter-notebook append


【解决方案1】:

您只是忘记了() 来执行函数time() - 或者更确切地说是time.time()

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

编辑:

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

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

顺便说一句:

你可以写得更短

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

【讨论】:

  • 您要求提供时间戳,1.635410e+09 是时间戳,但它可能会以科学记数法显示。如果您使用print(1.635410e+09),那么您可以看到1635410000.0。但是,如果您想要当前时间和日期,那么只需使用 datetime.datetime.now()
  • 感谢 heaps。time. time() 存在一个小问题,它返回的数字为 1.635410e+09 而不是 28-Oct-2021 13:58:452021-10-28 13:58:45 最初的网站日期时间戳为 ` #28-Oct-2021 13:16:44time = self.session.get(url,headers=self.headers).json()["records"]['timestamp'] # output 28-Oct-2021 13:16:44 print(time) date_time_obj = datetime.strptime(time,'%d-%b-%Y %H:%M:%S') print(date_time_obj) # output 2021-10-28 13:58:45df.loc[:,"recordedat"] = time.time() 如何反映日期时间戳?
  • 我只想要来自网站的时间戳,因为可能会有延迟并且想记录延迟(如果有的话)。简而言之,使用网站中提到的日期时间戳而不是 datetime.datetime.now() 是至关重要的跨度>
  • 如果你需要价值 timedate 然后不要使用 time.time() 而只是 datetime.datetime.now() 。如果你想要来自JSON 的值,那么将这个值date_time_obj 赋值给dataframe。如果您想要延迟,则减去两个值 datetime.datetime.now() - date_time_obj - 但这给出的是 timedelta,而不是 datettime,它会以不同的方式显示它。
  • 抱歉错误的代码回复。我需要来自网站的 JSON 日期和时间戳以及日期时间格式。请忽略我对时间延迟或时间增量的解释。顺便说一句,感谢您的所有帮助。
猜你喜欢
  • 2021-08-26
  • 2018-07-19
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
相关资源
最近更新 更多