我想(手動)根據以下代碼在 Python 中創建一個帶有每日日期(在“日期”列中)的資料框。但是代碼沒有為每日日期提供正確的格式,忽略了日期(所需的格式表示如下)。您能否告知我如何更正代碼以便以所需格式輸入“日期”列?提前致謝!
------------------------------------------------------
desired format for date column
2021-03-22 3
2021-04-07 3
2021-04-18 3
2021-05-12 0
------------------------------------------------------
df1 = pd.DataFrame({"date": [2021-3-22, 2021-4-7, 2021-4-18, 2021-5-12],
"x": [3, 3, 3, 0 ]})
df1
date x
0 1996 3
1 2010 3
2 1999 3
3 2004 0
uj5u.com熱心網友回復:
Python 想要將序列中的數字解釋2021-3-22為一系列數學運算2021 minus 3 minus 22。
如果您希望將該專案存盤為類似于日期的字串,則需要將它們標記為字串文字資料型別 ( str),如下所示,用引號將它們封裝起來。
import pandas as pd
df1 = pd.DataFrame({"date": ['2021-3-22', '2021-4-7', '2021-4-18', '2021-5-12'],
"x": [3, 3, 3, 0 ]})
如此處所示的日期列的結果表明,日期列包含包含在 pandas中的object資料型別的元素。str請注意,字串的創建完全如圖所示(2021-3-22而不是2021-03-22)。
0 2021-3-22
1 2021-4-7
2 2021-4-18
3 2021-5-12
Name: date, dtype: object
但是,如果您實際上希望將它們存盤為datetime物件,以便您可以對它們進行日期時間操作(即確定兩個日期之間的天數或按特定月份或年份過濾),那么您需要將值轉換為datetime物件。
這種技術將做到這一點:
df1['date'] = pd.to_datetime(df1['date'])
此轉換的結果是啟用納秒精度的 Pandasdatetime物件(我datetime將其與限制為微秒精度的 Python 物件區分開來)。
0 2021-03-22
1 2021-04-07
2 2021-04-18
3 2021-05-12
Name: date, dtype: datetime64[ns]
請注意,現在顯示的結果的格式與您期望的一樣datetimes(2021-03-22而不是2021-3-22)。
uj5u.com熱心網友回復:
您可能希望將系列創建為日期時間,并在將以下代碼用作字串時使用以下代碼,此處為 pandas.to_datetime的更多資訊:
df1 = pd.DataFrame({"date": pd.to_datetime(["2021-3-22", "2021-4-7", "2021-4-18", "2021-5-12"]),
"x": [3, 3, 3, 0 ]})
uj5u.com熱心網友回復:
FWIW,我經常使用pd.read_csv(io.StringIO(text))將表格形式的資料復制/粘貼到DataFrame(例如,來自 SO 問題)。
例子:
import io
import re
import pandas as pd
def df_read(txt, **kwargs):
txt = '\n'.join([s.strip() for s in txt.splitlines()])
return pd.read_csv(io.StringIO(re.sub(r' ', '\t', txt)), sep='\t', **kwargs)
txt = """
date value
2021-03-22 3
2021-04-07 3
2021-04-18 3
2021-05-12 0
"""
df = df_read(txt, parse_dates=['date'])
>>> df
date value
0 2021-03-22 3
1 2021-04-07 3
2 2021-04-18 3
3 2021-05-12 0
>>> df.dtypes
date datetime64[ns]
value int64
dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463191.html
