在我的資料框中將日期時間條目轉換為超過 3 列的月份值時遇到問題。
我嘗試過的是撰寫一個 lambda 函式:
lambda x: x.strftime('%m') if isinstance(x , datetime.datetime) else x
并使用 .apply 應用它:
df.apply(lambda x: x.strftime('%m') if isinstance(x , datetime.datetime) else x)
我的資料集似乎沒有任何變化。
期望的結果是由此而來;
| 日期 1 | 日期 2 | 日期 3 |
|---|---|---|
| 2022-05-26 00:00:00 | 2022-05-31 00:00:00 | 2022-06-05 00:00:00 |
| 2022-06-01 00:00:00 | 2022-06-13 00:00:00 | 2022-07-05 00:00:00 |
對此;
| 日期 1 | 日期 2 | 日期 3 |
|---|---|---|
| 05 | 05 | 06 |
| 06 | 06 | 07 |
在此先感謝,我還在訓練輪上...
親切的問候,邁克。
uj5u.com熱心網友回復:
在 lambda 函式中使用Series.dt.strftime每列DataFrame.apply:
df1 = df.apply(lambda x: x.dt.strftime('%m'))
print (df1)
date 1 date 2 date 3
0 05 05 06
1 06 06 07
如果在元素中使用 lambda 函式,您的解決方案是可能的DataFrame.applymap,但它不是矢量化的:
df1 = df.applymap(lambda x: x.strftime('%m') if isinstance(x , pd.Timestamp) else x)
如果需要月份名稱:
df2 = df.apply(lambda x: x.dt.month_name())
print (df2)
date 1 date 2 date 3
0 May May June
1 June June July
uj5u.com熱心網友回復:
你會試試這個嗎?
for col in df.columns:
df[col] = pd.to_datetime(df[col]).dt.strftime('%m')
print(df)
date1 date2 date3
0 05 05 06
1 06 06 07
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490542.html
