如何基于模式

时间:2019-08-28 03:48:40

标签: python python-3.x string pandas dataframe

我有一个数据框,其中的列如下所示

enter image description here

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

我正在尝试将time相关列的数据类型从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')时,一切正常,如下所示

enter image description here

我尝试使用containscontain,但是它不起作用。我在犯什么错误吗?像endswith这样的属性如何起作用,而contains却不起作用

1 个答案:

答案 0 :(得分:1)

迭代pd.DataFrame.columns返回str,它确实具有endswiths但没有contains,这是pandas 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
...

另外,df.filter(like='time').columns

Index(['btime', 'timec', 'timedtime'], dtype='object')

根据需要返回:

  

like :字符串   保持标签远离“类似于标签== True”的轴。