Python 如何基于模式一次转换多列的数据类型

Python 如何基于模式一次转换多列的数据类型,python,python-3.x,string,pandas,dataframe,Python,Python 3.x,String,Pandas,Dataframe,我有一个dataframe,其列如下所示 我没有提供虚拟数据,因为问题与数据无关 我正在尝试将时间相关列的数据类型从object更改为datetime类型 这是我试过的代码 for c in df1.columns: print(type(c)) if c.contains('time'): print(c) pd.to_datetime(df[c]) 但我收到一条错误消息 “str”对象没有“contains”属性 然而,当我使用'c.endswith't

我有一个dataframe,其列如下所示

我没有提供虚拟数据,因为问题与数据无关

我正在尝试将时间相关列的数据类型从object更改为datetime类型

这是我试过的代码

for c in df1.columns:
   print(type(c))
   if c.contains('time'):
      print(c)
      pd.to_datetime(df[c])
但我收到一条错误消息

“str”对象没有“contains”属性

然而,当我使用'c.endswith'time'时,它可以正常工作,如下所示

我尝试了contains和contain,但都不起作用。我犯了什么错误吗?像endswith这样的属性如何工作但不包含

迭代pd.DataFrame.columns返回str,str有endswiths但不包含,这是str访问器的一种方法:

import pandas as pd

df = pd.DataFrame(columns=['a', 'btime', 'timec', 'timedtime', 'e'])
for c in df.columns:
    print(type(c), hasattr(c, 'endswith'), hasattr(c, 'contains'))
输出:

# type    endswith contains
<class 'str'> True False
...
按需要返回:

比如:字符串 从“标签中的like==True”的轴保留标签


对pd.DataFrame.columns的迭代返回str,str有endswiths,但不包含,这是str访问器的一种方法。另外,我想你想要的是df.filterlike='time'。你介意把它写下来作为一个答案,让我标记为解决方案吗?当然。添加了一些示例代码片段进行演示:它可以工作。将在较短时间内接受答复。已经投票了
Index(['btime', 'timec', 'timedtime'], dtype='object')