Pandas dt 访问器 returns 日期和月份错误
Pandas dt accessor returns wrong day and month
我的 CSV 数据是这样的 -
Date Time
1/12/2019 12:04AM
1/12/2019 12:09AM
1/12/2019 12:14AM
等等
我正在尝试使用 pandas 以下列方式读取此文件 -
import pandas as pd
import numpy as np
data = pd.read_csv('D 2019.csv',parse_dates=[['Date','Time']])
print(data['Date_Time'].dt.month)
当我尝试通过 dt 访问器访问年份时,打印出来的年份是 2019 年。
但是当我尝试打印日期或月份时,它是完全不正确的。对于月份,它以 1 开始,以 12 结束,此时正确的值应始终为 12。
一天从 12 开始到 31 结束,而它应该从 1 开始到 31 结束。该文件共有 8867 个条目。我哪里错了?
您需要检查数据框的数据类型并将“日期”列转换为日期时间
df["Date"] = pd.to_datetime(df["Date"])
之后您可以使用以下方式访问日、月或年:
dt.day
dt.month
dt.year
注意:确定日期格式(D/M/Y或M/D/Y)
完整代码
import pandas as pd
import numpy as np
data = pd.read_csv('D 2019.csv')
data["Date"] = pd.to_datetime(data["Date"])
print(data["Date"].dt.day)
print(data["Date"].dt.month)
print(data["Date"].dt.year)
尝试分配 format
参数 pd.to_datetime
df = pd.read_csv('D 2019.csv')
df["Date_Time"] = pd.to_datetime(df["Date_Time"], format='%d/%m/%Y %H:%M%p')
默认格式为 MM/DD,而您的格式为 DD/MM。
最简单的解决方案是设置read_csv
的dayfirst
参数:
dayfirst
: DD/MM format dates, international and European format (default False
)
data = pd.read_csv('D 2019.csv', parse_dates=[['Date', 'Time']], dayfirst=True)
# -------------
>>> data['Date_Time'].dt.month
# 0 12
# 1 12
# 2 12
# Name: Date_Time, dtype: int64
我的 CSV 数据是这样的 -
Date Time
1/12/2019 12:04AM
1/12/2019 12:09AM
1/12/2019 12:14AM
等等
我正在尝试使用 pandas 以下列方式读取此文件 -
import pandas as pd
import numpy as np
data = pd.read_csv('D 2019.csv',parse_dates=[['Date','Time']])
print(data['Date_Time'].dt.month)
当我尝试通过 dt 访问器访问年份时,打印出来的年份是 2019 年。 但是当我尝试打印日期或月份时,它是完全不正确的。对于月份,它以 1 开始,以 12 结束,此时正确的值应始终为 12。
一天从 12 开始到 31 结束,而它应该从 1 开始到 31 结束。该文件共有 8867 个条目。我哪里错了?
您需要检查数据框的数据类型并将“日期”列转换为日期时间
df["Date"] = pd.to_datetime(df["Date"])
之后您可以使用以下方式访问日、月或年:
dt.day
dt.month
dt.year
注意:确定日期格式(D/M/Y或M/D/Y)
完整代码
import pandas as pd
import numpy as np
data = pd.read_csv('D 2019.csv')
data["Date"] = pd.to_datetime(data["Date"])
print(data["Date"].dt.day)
print(data["Date"].dt.month)
print(data["Date"].dt.year)
尝试分配 format
参数 pd.to_datetime
df = pd.read_csv('D 2019.csv')
df["Date_Time"] = pd.to_datetime(df["Date_Time"], format='%d/%m/%Y %H:%M%p')
默认格式为 MM/DD,而您的格式为 DD/MM。
最简单的解决方案是设置read_csv
的dayfirst
参数:
dayfirst
: DD/MM format dates, international and European format (defaultFalse
)
data = pd.read_csv('D 2019.csv', parse_dates=[['Date', 'Time']], dayfirst=True)
# -------------
>>> data['Date_Time'].dt.month
# 0 12
# 1 12
# 2 12
# Name: Date_Time, dtype: int64