我有一个数据框,其中的列如下所示
我没有提供虚拟数据,因为问题与数据无关。
我正在尝试将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')时,一切正常,如下所示
我尝试使用contains
和contain
,但是它不起作用。我在犯什么错误吗?像endswith
这样的属性如何起作用,而contains
却不起作用
答案 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”的轴。