簡體   English   中英

Python 將 datetime.date 轉換為 str

[英]Python converting datetime.date to str

我有一個 pandas.DataFrame,其中包含“開始”、“結束”和“vals_to_sum”列。 我想以 datetime.date 格式對后一列中日期的所有值求和: date_list = [start_date + datetime.timedelta(days=i) for i in range(366)]其中 start_date 是日期時間。日期。 我有一個問題,當我嘗試索引我的開始和日期時間時,python 似乎將它們轉換為 str 格式並且我得到一個 TypeError。

我的代碼目前是:

# Initialise empty array to fill with summed values for each day
output = numpy.zeros(len(date_list))
for idx, date in enumerate(date_list):
   # Concatonate all values within date range start < x < end
   print(type(start),'start') # <class 'datetime.date'> start
   print(type(end), 'end') # <class 'datetime.date'> end
   print(type(date), 'date') # <class 'datetime.date'> date
   to_sum = [value for i, value in enumerate(df['vals_to_sum'])
   if df['start'] <= date & df['end'] >= date]
   output[idx] = numpy.sum(numpy.array(to_sum).astype(numpy.float))

但是,我收到以下錯誤:TypeError: unsupported operand type(s) for &: 'str' and 'datetime.date'

Pandas 數據幀將指向每個字符串的指針存儲到“對象”類型中(查看https 中的文檔://pandas.pydata.org/pandasdocs/stable/user_guide/text.html )。 如果您想將其分配回該列,您可以執行以下操作:

df['column_new'] = df['column'].str.split(',')

由於我不確定您的列表/表格是如何構建的,另一個問題可能是沒有正確比較日期。 在任何日期時間 object,您可以調用它的 toString 方法。 這是另一個鏈接,您可以閱讀如何執行此操作: https://www.programiz.com/python-programming/datetime/strftime

您還嘗試使用按位和- 如果您不確定這意味着什么,如果您要執行 1010 和 0101,它將返回 0000。您對此的理解與您的問題無關,但您確實需要要知道這不是你想要的。 您想要使用boolean 和. 要在 python 中執行此操作:將“&”替換為“and”

我不確定你所擁有的一切都是如何構建的,但希望這足以幫助你的代碼正常工作!

我不完全理解你輸入的代碼,尤其是我不知道 dataframe 的內容,尤其是下面的 df['start'] 和 df['end'] 但我可以評論以下內容希望能幫到你。 將此行更改為“and”,我看到它丟失了:和縮進,但我想這是由於平台上的復制和粘貼問題而沒有意識到

if df['start'] <= date & df['end'] >= date:

即使這條線也可能是這樣的

if df['start'] <= date >= df['end']:

關於錯誤,使用以下 function 將字符串轉換為日期時間並為其提供所需的格式,如下所示

start = datetime.datetime.strptime(df['start'],'%m/%d/%Y')

end = datetime.datetime.strptime(df['end'],'%m/%d/%Y')

if start <= date >= end:

我的語言不是英語,希望你能理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM