我有個問題。我想將日期從 轉換'2008-09-24'為'24.09.2008'。我得到的是<function <lambda> at 0x000001CD2B9CE820>. 我怎么能遍歷host_since并轉換日期?
host_since = npListings[:,4].astype(np.datetime64)
# host_since =
['2008-09-24' '2009-12-02' '2009-11-20' '2010-03-23' '2010-05-13'
'2010-05-13' '2010-05-25' '2010-07-23' '2009-12-22' '2010-08-08']
get_cubes = lambda x: [datetime.strptime(d, '%y-%m,%d').strftime('%d.%m.%Y') for d in range(host_since.shape[0])]
print(get_cubes)
[OUT]
<function <lambda> at 0x000001CD2B9CE82
我想要的是 get_cubes = ['24.09.2008' ... '08.08.2010'] # 也應該是一個 numpy 陣列
uj5u.com熱心網友回復:
2分:
- 以您包含的日期為例,在
strptime函式中您的格式錯誤,應該是%Y-%m-%d而不是%y-%m,%d for d in range(host_since.shape[0])迭代整數,對吧?那么strptime作業如何呢?- 我們顯然是從所有字串日期都是正確的可決議格式的假設開始的 - 請注意,如果不是這種情況,a
ValueErrorwill 拋出 bystrptime,所以也許還需要一些健全性檢查。
我已將您的代碼改寫如下:
host_since =np.array(\
['2008-09-24', '2009-12-02', '2009-11-20', '2010-03-23', '2010-05-13',
'2010-05-13', '2010-05-25', '2010-07-23', '2009-12-22', '2010-08-08'])
cubes = [datetime.strptime(d, '%Y-%m-%d').strftime('%d.%m.%Y') for d in host_since]
print(cubes)
如果你想使用range,在我看來你應該這樣寫:
cubes = [datetime.strptime(host_since[d], '%Y-%m-%d').strftime('%d.%m.%Y') for d in range(host_since.shape[0])]
print(cubes)
如上所述,在這里使用 lambda 函式是不必要的。
uj5u.com熱心網友回復:
正如@Reti43 所提到的,您不妨完全跳過 lambda。
cubes = [datetime.strptime(str(host_since[i]), '%Y-%m-%d').strftime('%d.%m.%Y')
for i in range(host_since.shape[0])]
print(cubes)
注意:如果注釋掉的host_since變數中的資料與 numpy 陣列中的實際資料相匹配,則您需要將strptime格式更改為%Y-%m-%d.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/337076.html
