[英]pandas datetime columns problem and i don't know what i am missing
我是韩国学生
请理解英语很尴尬
我想让列 datetime > year,mounth.... ,second
train = pd.read_csv('input/Train.csv')
DateTime 看起来像这样(这是 head(20),我删除了其他容易看到的列)
datetime
0 2011-01-01 00:00:00
1 2011-01-01 01:00:00
2 2011-01-01 02:00:00
3 2011-01-01 03:00:00
4 2011-01-01 04:00:00
5 2011-01-01 05:00:00
6 2011-01-01 06:00:00
7 2011-01-01 07:00:00
8 2011-01-01 08:00:00
9 2011-01-01 09:00:00
10 2011-01-01 10:00:00
11 2011-01-01 11:00:00
12 2011-01-01 12:00:00
13 2011-01-01 13:00:00
14 2011-01-01 14:00:00
15 2011-01-01 15:00:00
16 2011-01-01 16:00:00
17 2011-01-01 17:00:00
18 2011-01-01 18:00:00
19 2011-01-01 19:00:00
然后我编写这段代码来查看每一列(年、月、日、小时、分钟、秒)
train['year'] = train['datetime'].dt.year
train['month'] = train['datetime'].dt.month
train['day'] = train['datetime'].dt.day
train['hour'] = train['datetime'].dt.hour
train['minute'] = train['datetime'].dt.minute
train['second'] = train['datetime'].dt.seond
和这样的错误
AttributeError: 只能使用带有 datetimelike 值的 .dt 访问器
请帮帮我ㅠㅅㅠ
请注意,默认情况下read_csv只能推断数字和 boolean 列的列类型。 除非明确指定(例如传递转换器或dtype参数),否则所有其他输入情况都保留为字符串,并且此类列的pandasonic类型为object 。
就在你的情况下发生了这种情况。 因此,由于此列是object类型,因此您不能在其上调用dt访问器,因为它仅适用于datetime类型的列。
实际上,在这种情况下,您可以采取以下方法:
为此,您可以运行:
wrk = df['datetime'].str.split(r'[- :]', expand=True).astype(int)
wrk.columns = ['year', 'month', 'day', 'hour', 'minute', 'second']
df = df.join(wrk)
del wrk
df['datetime'] = pd.to_datetime(df['datetime'])
请注意,我添加了astype(int) 。 否则,这些列将保留为object (实际上是string )类型。
或者也许不再需要这个原始列(因为您已经提取了所有日期/时间组件)? 在这种情况下,删除此列而不是转换它。
最后一个提示: datetime被用作类型名称(带有各种结尾)。 因此,最好在此处使用其他名称,至少在字符大小写上有所不同,例如DateTime 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.