如何将Datetime格式转换为时分并应用到Pandas整列?
解决Pandas整列时间格式转换为时分的问题
嘿,我来帮你搞定这个时间格式转换的问题!你已经找到了单个时间值的转换方法,但要应用到整列数据上,确实需要用Pandas的矢量化方法来处理,而不是直接用datetime.strptime(它只能处理单个字符串哦)。
先拆解下你遇到的两个错误原因:
- 第一个错误(TypeError):
datetime.strptime()只能接受单个字符串参数,而你直接传入了Pandas Series(整列数据),自然会触发类型不匹配的报错。 - 第二个错误(SyntaxError + NameError):
NameError是因为你没有提前导入Pandas库;SyntaxError大概率是代码里的换行续行符(反斜杠\)后面多了空格或者格式不对导致的。
正确的解决方法(推荐矢量化处理,效率更高)
首先确保导入Pandas库,然后用Pandas内置的pd.to_datetime()批量转换整列数据,再通过.dt.strftime()提取时分格式:
import pandas as pd # 假设你的数据是这样的DataFrame df = pd.DataFrame( {'time_column': ['2017-01-01T19:33:28+0000', '2017-01-02T10:15:00+0000', '2017-01-03T08:45:30+0000']} ) # 转换整列为时分格式 df['hour_minute'] = pd.to_datetime(df['time_column']).dt.strftime('%H:%M') # 查看结果 print(df)
执行后你会得到新增的hour_minute列,里面就是对应的HH:MM格式数据。
备选方法:使用apply(适合小数据量)
如果偏好使用datetime.strptime,可以用apply方法对每一行数据单独处理,但这种方法在数据量大的时候效率会比矢量化方法低:
from datetime import datetime import pandas as pd df = pd.DataFrame( {'time_column': ['2017-01-01T19:33:28+0000', '2017-01-02T10:15:00+0000', '2017-01-03T08:45:30+0000']} ) df['hour_minute'] = df['time_column'].apply( lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S%z').strftime('%H:%M') )
这样就能顺利把整列时间数据转换成你需要的小时分钟格式啦!
内容的提问来源于stack exchange,提问作者Pallison
相关产品推荐
相关产品推荐

