首页 > 解决方案 > 类型错误:+ 不支持的操作数类型:“datetime.datetime”和“datetime.time”

问题描述

我有一个熊猫数据框:

In [33]: df
Out[33]:
                         userId          2021-01-29          2021-01-30          2021-01-01
0                Nl3AG93Ss7L5aj            09:00:00                 NaN                 NaN
1                           NaN                 NaN                 NaN                 NaN
2                AbVpBHdfrI5aj1            12:10:00                 NaN                 NaN
3                           NaN                 NaN                 NaN                 NaN
4                           NaN                 NaN                 NaN                 NaN
5               sad9283ds7L5aj1                 NaN            15:35:00            22:22:00
6                           NaN                 NaN                 NaN                 NaN
7                           NaN                 NaN                 NaN                 NaN
8                           NaN                 NaN                 NaN                 NaN

我需要获取脚本开始工作的日期和时间,但出现错误:

TypeError Traceback (most recent call last)
<ipython-input-40-7ed51ff0c115> in <module>
      1 for column in df.columns.tolist():
----> 2     for  i in df.loc[df[column].apply(lambda x: isinstance(x, datetime.time))][column]: print(column + i)
      3

TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.time'

我也可以在不合并的情况下输出时间表:

In [22]: for column in df.columns.tolist():
    ...:     for  time in df.loc[df[column].apply(lambda x: isinstance(x, datetime.time))][column]: print(column, time)
    ...:
2021-01-29 00:00:00 09:00:00
2021-01-29 00:00:00 12:10:00
2021-01-30 00:00:00 15:35:00
2021-01-01 00:00:00 22:22:00

标签: pythonpandasdataframedatetime

解决方案


尝试将这些东西转换成字符串,然后使用+as 字符串 concat ...

for column in df.columns.tolist():
    for  i in df.loc[df[column].apply(lambda x: isinstance(x, datetime.time))][column]: print(column.strftime("%Y-%m-%d”) +" "+ i.strftime("%H:%M:%S”))
      

推荐阅读