[英]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.