【发布时间】:2018-12-15 11:14:09
【问题描述】:
我有一个偶数列中包含日期的数据框。日期格式为 yyyy.mm.dd hh:mm:ss,我想将其转换为 yyyy-mm-dd。 我通过过滤偶数列并像这样使用 dt.strftime 来实现:
even_cols = range(0, df.shape[1], 2)
df.iloc[:, even_cols] = df.iloc[:, even_cols].dt.strftime('%Y-%m-%d')
但我得到了这个错误
"AttributeError: 'DataFrame' 对象没有属性 'dt'"
【问题讨论】:
-
dt 访问器是 pd.Series 而非 pd.Dataframes 的一种方法,您正试图一次将 dt 访问器应用于多个列。
-
嗯,我现在明白为什么它不分叉了.. 那我该怎么办?迭代?
-
使用如下语法:
df[['A','B']] = df[['A','B']].apply(lambda x: x.dt.strftime('%Y-%m-%d')) -
还是不行,我不是从所有偶数列的第2行开始,我不能使用列名,因为他们事先不知道
df.iloc[2:, even_cols] = df.iloc[2:, even_cols].apply(lambda x: x.dt.strftime('%Y-%m-%d')) -
看下面的例子。运行它,看看它是否有效,然后尝试修改以适应您的情况。
标签: pandas type-conversion strftime