我有一个数据框,其中包含年、月和日的单独列。我尝试使用以下方法将这些单独的列合并为一个日期:
df['myDt']=pd.to_datetime(df[['year','month','day']])
只会出现以下错误:“组装映射至少需要指定 [年、月、日]:缺少 [日、月、年]”。不确定这意味着什么……我已经提供了相关的专栏。 在检查数据类型时,我发现它们的年、月和日列是 int64。那会引起问题吗? 谢谢, 切特
谢谢大家发帖。按照建议,我首先发布示例数据集:
Value mm yy dd
Date<br/>
2018-11-30 88.550067 11 2018 1
2018-12-31 88.906290 12 2018 1
2019-01-31 88.723000 1 2019 1
2019-02-28 89.509179 2 2019 1
2019-03-31 90.049161 3 2019 1
2019-04-30 90.523100 4 2019 1
2019-05-31 90.102484 5 2019 1
2019-06-30 91.179400 6 2019 1
2019-07-31 90.963570 7 2019 1
2019-08-31 92.159170 8 2019 1
数据来源为:https://www.quandl.com/data/EIA/STEO_NGPRPUS_M 我导入数据如下: 1.导入quandl(首先使用conda安装) 2.使用Quandl的Python代码:
data=quandl.get("EIA/STEO_NGPRPUS_M", authtoken="TOKEN","2005-01-01","2005-12-31") 4. 请注意,原始数据仅带有 Value 列,并且 DateTime 作为索引。我提取并创建了 mm、yy 和 dd 列(月、年和 dd 是设置为 1 的列向量) 我想要做的就是创建另一个名为“本月的第一天”的列 - 因此对于每个月的每一天,该列将只显示“MM/YY/1”。我将很快尝试下面的所有建议,然后回复你们。谢谢!!
最佳答案
解决方案
您可以将 datetime.datetime
与 .apply()
一起使用。
import datetime
d = datetime.datetime(2020, 5, 17)
date = d.date()
对于 pandas.to_datetime(df)
看起来你的代码没问题。参见 pandas.to_datetime
documentation和 How to convert columns into one datetime column in pandas? .
df = pd.DataFrame({'year': [2015, 2016],
'month': [2, 3],
'day': [4, 5]})
pd.to_datetime(df[["year", "month", "day"]])
输出:
0 2015-02-04
1 2016-03-05
dtype: datetime64[ns]
如果 YEAR、MONTH 和 DAY 列的标题不同怎么办?
假设您的 YEAR、MONTH 和 DAY 列分别标记为 yy
、mm
和 dd
。并且您希望保持列名不变。在这种情况下,您可以按如下方式进行。
import pandas as pd
df = pd.DataFrame({'yy': [2015, 2016],
'mm': [2, 3],
'dd': [4, 5]})
df2 = df[["yy", "mm", "dd"]].copy()
df2.columns = ["year", "month", "day"]
pd.to_datetime(df2)
输出:
0 2015-02-04
1 2016-03-05
dtype: datetime64[ns]
关于python - 在 Python 中结合年、月和日来创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58072683/