亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將對象轉換為沒有時間的日期時間

將對象轉換為沒有時間的日期時間

翻過高山走不出你 2023-03-30 17:27:01
我有如下所示的數據框:         Date      Region     Data   0   200201        A        8.8   1   200201        B        14.3                    ...     1545   202005        C        7.31546   202005        D        131我想在沒有時間的情況下將 Date 列(數據類型:對象)轉換為 DateTime 索引。yyyymm 或 yyyymmdd 或 yyyy-mm-dd 所有這些都無關緊要,只要我可以刪除時間部分。我搜索了 stackoverflow 并嘗試了這些代碼# (1) df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m", errors = "coerce", uts = False)# (2)df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m")df["Date"] = df["Date"].dt.normalize()# (3)df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m")df["Date"] = df["Date"].dt.date對于 (1) 和 (2),我得到 ["Date"],時間為 yyyy-mm-dd 00:00:00。對于 (3),我確實得到 ["Date"] 作為 yyyymm 但 dtype 是對象。我不能使用日期范圍,因為同一日期會重復一段時間。有什么方法可以在 python 中將 yyyymm[object] 轉換為 yyyymmdd[datetime] 嗎?提前致謝。
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

這可能是關于您的 DataFrame 在編輯器中的顯示方式的顯示配置問題。以正確格式獲取數據的最簡單方法是:


df['Date'] = pd.to_datetime(df['Date'], format = '%Y%m')

以下是repl.it使用您的 DataFrame 和此代碼的結果。日期格式正確,沒有時間部分,并且具有正確的 dtype。


        Date Region  Data

0 2002-01-01      A   8.8


<class 'pandas.core.frame.DataFrame'>

RangeIndex: 1 entries, 0 to 0

Data columns (total 3 columns):

 #   Column  Non-Null Count  Dtype         

---  ------  --------------  -----         

 0   Date    1 non-null      datetime64[ns]

 1   Region  1 non-null      object        

 2   Data    1 non-null      float64       

dtypes: datetime64[ns](1), float64(1), object(1)

memory usage: 152.0+ bytes

您還可以嘗試一種更復雜的方法,從日期時間到日期字符串再回到日期時間。


df['Date'] = pd.to_datetime(df['Date'], format = '%Y%m').dt.date

df['Date'] = df['Date'].astype('datetime64[ns]')

最終顯示和 dtype 是相同的。


        Date Region  Data

0 2002-01-01      A   8.8


<class 'pandas.core.frame.DataFrame'>

RangeIndex: 1 entries, 0 to 0

Data columns (total 3 columns):

 #   Column  Non-Null Count  Dtype         

---  ------  --------------  -----         

 0   Date    1 non-null      datetime64[ns]

 1   Region  1 non-null      object        

 2   Data    1 non-null      float64       

dtypes: datetime64[ns](1), float64(1), object(1)

memory usage: 152.0+ bytes


查看完整回答
反對 回復 2023-03-30
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

問題中的日期列的格式為 YYYYMM(但沒有天數)。該函數pd.to_datetime()隱式地將日設置為 1。


該函數pd.Period()將 YYYYMM 格式的日期轉換為 pandas 句點。請注意,df['Date'] 可以是字符串或 6 位整數。


df['Date'].apply(lambda x: pd.Period(x, freq='M'))


0    2002-01

1    2002-01

2    2020-05

3    2020-05

Name: Date, dtype: period[M]


查看完整回答
反對 回復 2023-03-30
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號