python-3.x 属性错误:“DataFrame”对象没有属性“to_datetime”

nsc4cvqm  于 2023-03-20  发布在  Python
关注(0)|答案(2)|浏览(531)

我想将Pandas数据框中'Time'列中的所有项目从UTC转换为东部时间。但是,根据this stackoverflow帖子中的答案,有些关键字在Pandas0.20.3中是未知的。总的来说,我应该如何完成这项任务?

tweets_df = pd.read_csv('valid_tweets.csv')

tweets_df['Time'] = tweets_df.to_datetime(tweets_df['Time'])
tweets_df.set_index('Time', drop=False, inplace=True)

错误为:

tweets_df['Time'] = tweets_df.to_datetime(tweets_df['Time'])
  File "/scratch/sjn/anaconda/lib/python3.6/site-packages/pandas/core/generic.py", line 3081, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'to_datetime'

“时间”列中的项如下所示:

2016-10-20 03:43:11+00:00

更新:使用

tweets_df['Time'] = pd.to_datetime(tweets_df['Time'])
tweets_df.set_index('Time', drop=False, inplace=True)
tweets_df.index = tweets_df.index.tz_localize('UTC').tz_convert('US/Eastern')

没有时间转换。知道有什么可以修复的吗?
更新2:所以下面的代码,不做就地转换意味着当我用iterrows()打印row['Time']时,它显示的是原始值。你知道如何做就地转换吗?

tweets_df['Time'] = pd.to_datetime(tweets_df['Time'])
for index, row in tweets_df.iterrows():
    row['Time'].tz_localize('UTC').tz_convert('US/Eastern')
for index, row in tweets_df.iterrows():
    print(row['Time'])
js81xvg6

js81xvg61#

to_datetime是在panda中定义的函数,而不是DataFrame上的方法。请尝试:

tweets_df['Time'] = pd.to_datetime(tweets_df['Time'])
oxf4rvwz

oxf4rvwz2#

to_datetime是一个通用函数,没有等价的DataFrame方法,也就是说,可以在单列 Dataframe 上使用apply调用它。

tweets_df['Time'] = tweets_df[['Time']].apply(pd.to_datetime)

如果需要将多个列转换为datetime64,则apply特别有用。
也可以将其应用于一个列,但这并不是真正可取的,因为现在它变成了一个循环的列,这将是非常缓慢的大型帧。

tweets_df['Time'] = tweets_df['Time'].apply(pd.to_datetime)
#                            ^      ^  <--- single brackets

PSA:传递format=使转换运行得更快。有关详细信息,请参阅this post

相关问题