gpt4 book ai didi

python - 如何将一列数字转换为python数据框中的日期

转载 作者:行者123 更新时间:2023-11-28 17:06:43 25 4
gpt4 key购买 nike

我的数据框包含一个日期列。它看起来像这样:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com