我有一个数据框,其中包含年,月和日的单独列。我尝试使用以下方法将这些单独的列合并为一个日期:
df['myDt']=pd.to_datetime(df[['year','month','day']])
仅得到以下错误:“组装映射至少需要指定[年,月,日]:[天,月,年]丢失”。不知道这意味着什么。...我已经提供了相关的列。 在检查数据类型时,我发现它们的Year,Month和Day列为int64。那会引起问题吗? 谢谢, 切
谢谢大家发表。根据建议,我将首先发布样本数据集:
Value mm yy dd
Date
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.请注意,原始数据仅带有“值”列,而DateTime作为索引。我提取并创建了mm,yy和dd列(月,年和dd是设置为1的列向量) 我要尝试做的就是创建另一个称为“月初”的列-因此,对于每个月的每一天,该列将仅显示“ MM / YY / 1”。我将尽快尝试以下所有建议,并再次与大家联系。谢谢!
答案 0 :(得分:2)
您应按以下方式使用apply
方法:
from datetime import datetime
df['myDt'] = df.apply(lambda row: datetime.strptime(f"{int(row.year)}-{int(row.month)}-{int(row.day)}", '%Y-%m-%d'), axis=1)
运行示例:
>>> d = {'year': list(range(2015, 2020)), 'month': list(range(5, 10)), 'day': >> list(range(20, 25))}
>> df = pd.DataFrame(d)
>> df
year month day myDt
0 2015 5 20 2015-05-20
1 2016 6 21 2016-06-21
2 2017 7 22 2017-07-22
3 2018 8 23 2018-08-23
4 2019 9 24 2019-09-24
答案 1 :(得分:1)
您可以将this
与const self = this;
if (event.key == "ArrowRight") {
if (self.midMenuIndex < 2) {
self.midMenuIndex++;
}
} else if (event.key == "ArrowLeft") {
if (self.midMenuIndex > 0) {
self.midMenuIndex--;
}
}
$('.dots li').each(function() {
console.log(parseInt($(this).index()) == self.midMenuIndex);
});
一起使用。
datetime.datetime
.apply()
看起来您的代码很好。请参见jQuery's documentation和pandas.to_datetime
documentation。
import datetime
d = datetime.datetime(2020, 5, 17)
date = d.date()
输出:
pandas.to_datetime(df)
假设您的YEAR,MONTH和DAY列分别标记为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]
和yy
。而且您更希望保持列名不变。在这种情况下,您可以按照以下步骤进行操作。
mm
输出:
dd
答案 2 :(得分:1)
这里有两个衬里:
df['dateInt']=df['year'].astype(str) + df['month'].astype(str).str.zfill(2)+ df['day'].astype(str).str.zfill(2)
df['Date'] = pd.to_datetime(df['dateInt'], format='%Y%m%d')
输出
year month day dateInt Date
0 2015 5 20 20150520 2015-05-20
1 2016 6 21 20160621 2016-06-21
2 2017 7 22 20170722 2017-07-22
3 2018 8 23 20180823 2018-08-23
4 2019 9 24 20190924 2019-09-24