作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据框包含一个日期列。它看起来像这样:
Index Date
0 12018
1 102018
2 32018
3 122018
4 112019
5 32019
6 42019
最后四个数字表示年份,前(两个)月份。我想将列更改为:
- 01-01-2018
- 01-01-2018
- 01-10-2018
- 01-03-2018
...
或者甚至更好的日期时间格式。
我试过这个功能,它显示:
TypeError: can only concatenate list (not "str") to list
def adjust_date(dataset_in, col_name):
day = "01"
for col in col_name:
if len(col_name)>5:
month = col_name[0:1]
year = col_name[2:5]
else:
month = col_name[0]
year = col_name[1:4]
result = year + "-" + month + "-" + day
return result
最佳答案
我认为to_datetime
带有指定的 format应该足够了:
df['Date'] = pd.to_datetime(df['Date'], format='%m%Y')
print (df)
Index Date
0 0 2018-01-01
1 1 2018-10-01
2 2 2018-03-01
3 3 2018-12-01
4 4 2019-11-01
5 5 2019-03-01
6 6 2019-04-01
print (df.dtypes)
Index int64
Date datetime64[ns]
dtype: object
感谢@Vivek Kalyanarangan 提供解决方案 - 添加 strftime
对于自定义 string
格式(但丢失了日期时间):
df['Date'] = pd.to_datetime(df['Date'], format='%m%Y').dt.strftime('%d-%m-%Y')
print (df)
Index Date
0 0 01-01-2018
1 1 01-10-2018
2 2 01-03-2018
3 3 01-12-2018
4 4 01-11-2019
5 5 01-03-2019
6 6 01-04-2019
print (df.dtypes)
Index int64
Date object
dtype: object
print (df['Date'].apply(type))
0 <class 'str'>
1 <class 'str'>
2 <class 'str'>
3 <class 'str'>
4 <class 'str'>
5 <class 'str'>
6 <class 'str'>
Name: Date, dtype: object
关于python - 如何将一列数字转换为python数据框中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503290/
我是一名优秀的程序员,十分优秀!