我曾經pandas創建一個字典串列。以下代碼是我創建串列的方式:
sheetwork = client.open('RMA Daily Workload').sheet1
list_of_work = sheetwork.get_all_records()
dfr = pd.DataFrame(list_of_work, columns = ['date' , 'value'])
rnow = dfrnow.to_dict('records')
以下是我的串列的輸出:
rnow =
[{'date': '01/02/2020', 'value': 13},
{'date': '01/03/2020', 'value': 2},
{'date': '01/06/2020', 'value': 5},
...
{'date': '01/07/2020', 'value': 6}]
我想將日期格式從 MM/DD/YYYY 更改為 YYYY-MM-DDT00:00:00.000Z,以便我的資料與我要添加資料的 javascript 檔案兼容。
我希望我的串列顯示為:
rnow =
[{'date': '2020-01-02T00:00:00.000Z', 'value': 13},
{'date': '2020-01-03T00:00:00.000Z', 'value': 2},
{'date': '2020-01-06T00:00:00.000Z', 'value': 5},
...
{'date': '2020-01-07T00:00:00.000Z', 'value': 6}]
我嘗試了很多方法,但只能將它們轉換為2020-01-02 00:00:00但不能2020-01-02T00:00:00.000Z。請告知我該怎么做
uj5u.com熱心網友回復:
如果您需要T00:00:00.000Z在時間之后精確這個字串,請嘗試在時間轉換后使用字串格式,
例如,
import datetime
# '2020-01-07T00:00:00.000Z'
datetime.datetime.strptime("07/02/2020", '%d/%m/%Y').strftime('%Y-%m-%dT00:00:00.000Z'))
如何申請熊貓:
def func(x):
myDate = x.date
return datetime.datetime.strptime(myDate, '%d/%m/%Y').strftime('%Y-%m-%dT00:00:00.000Z')
df['new_date'] = df.apply(func, axis=1)
uj5u.com熱心網友回復:
為了方便并保持 UTC,并且由于您使用的是 pandas:
rnow = [{'date': '01/02/2020', 'value': 13},
{'date': '01/03/2020', 'value': 2},
{'date': '01/06/2020', 'value': 5},
{'date': '01/07/2020', 'value': 6}]
def get_isoformat(date):
return pd.to_datetime(date, dayfirst=False, utc=True).isoformat()
for i in range (len(rnow)):
rnow[i]['date'] = get_isoformat(rnow[i]['date'])
rnow
輸出:
[{'date': '2020-01-02T00:00:00 00:00', 'value': 13},
{'date': '2020-01-03T00:00:00 00:00', 'value': 2},
{'date': '2020-01-06T00:00:00 00:00', 'value': 5},
{'date': '2020-01-07T00:00:00 00:00', 'value': 6}]
get_isoformat()事實上,為簡單起見,您可能需要考慮使用應用于資料框的函式。此外,如果您使用utc=None將擺脫 00:00部分,以防您不想要或不需要它。
編輯
要具體2020-01-02T00:00:00Z嘗試:
pd.to_datetime(date, dayfirst=False, utc=False).isoformat() 'Z'
uj5u.com熱心網友回復:
可以使用Python 內置包的isoformat功能:datetime
from datetime import datetime, timezone
formatted = datetime.strptime('01/02/2020', '%m/%d/%Y', tzInfo=timezone.utc).isoformat()
formatted
# Output: '2020-01-02T00:00:00 00:00'
請注意,Python 不支持ZUTC 時區的后綴,而是 00:00根據 ISO 8601 的后綴,并且應該可以很好地決議其他代碼。
如果這是一個問題,您可以省略時區,而是手動放置一個Z:
from datetime import datetime
formatted = datetime.strptime('01/02/2020', '%m/%d/%Y').isoformat() 'Z'
formatted
# Output: '2020-01-02T00:00:00Z'
或者(在更“手動”的方法中),您可以使用以下方式格式化日期strftime:
from datetime import datetime
formatted = datetime.strptime('01/02/2020', '%m/%d/%Y').strftime('%Y-%m-%dT00:00:00Z')
formatted
# Output: '2020-01-02T00:00:00Z'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429431.html
