【问题标题】:Converting dataframe series column to datetime [duplicate]将数据框系列列转换为日期时间[重复]
【发布时间】:2022-02-28 08:58:20
【问题描述】:

我有一个包含日期时间列 ('created_at') 类型的数据框:系列。我需要将此列转换为日期时间格式,以便对其执行一些 groupby 操作。

这是数据框结构:

           id                created_at                                          full_text 
0  1286763394658381824  ['2020-07-24T20:41:14Z']  عدم إصابتك بفايروس كورونا حتى الان مؤشر لأمرين
1  1240341918967459840  ['2020-03-18T18:18:52Z']  رسالة مسربة من داخل #سجن_العقرب تؤكد على تفشى 
2  1243387711995572224  ['2020-03-27T04:01:46Z']  في الافلام الاجنبيه نشاهد امريكا تقود العالم ل
3  1317384182012792832  ['2020-10-17T08:37:19Z']  هناك الكثير من الاكاذيب والفبركات حول لقاح كور
4  1317404463859142656  ['2020-10-17T09:57:55Z']  @kasimf لقاح كورونا ليس هدفه الإضرار بالبشر إن
5  1242851102258868224  ['2020-03-25T16:29:28Z']  بعد تفشي المرض في إيطاليا ولا وجود علاج قرر جم

我尝试了不同的方法将“create_at”列转换为日期时间格式,但没有一个奏效。这是一个例子:

    from dateutil.parser import parse
    df['date'] =parse(df['created_at'].astype(str))

这给了我以下错误:

    raise TypeError('Parser must be a string or character stream, not '
TypeError: Parser must be a string or character stream, not Series

编辑

我通过以下方式解决了这个问题:

from dateutil import parser
def convert_date(date_str):
        return parser.parse(date_str) 
        
df['date']= df['created_at'][0][2:-2]    
df['date'] = df['date'].apply(convert_date)

谢谢大家

【问题讨论】:

  • 使用 pd.to_datetime; df['date'] = pd.to_datetime(df['created_at'])
  • 感谢您的建议。这给了我以下错误: raise ParserError("Unknown string format: %s", timestr) dateutil.parser._parser.ParserError: Unknown string format: ['2020-07-24T20:41:14Z']
  • 也可以定义格式:pd.to_datetime(df['created_at'], format="%Y-%m-%dT%H:%M:%S%z).
  • ...或从列表中获取第一个元素:pd.to_datetime(df['created_at'].str[0])
  • 第二个建议也没有用:ValueError: time data '['2020-07-24T20:41:14Z']' does not match format '%Y-%m-%dT% H:%M:%S%Z'(匹配)

标签: python pandas dataframe datetime


【解决方案1】:

我觉得是

df['date'] = pd.to_datetime(df['created_at'])

【讨论】:

  • 从 OPs 示例中,在我看来 created_at 是熊猫系列,您的代码将无法正常工作。
  • 谢谢。但是,该建议似乎包含语法错误。我得到这个:NameError: name 'created_at' is not defined
  • 我认为转换应该是这样的:df['date'] =df['created_at'].astype('datetime64[ns]')
  • 不,是df['date'] = pd.to_datetime(df['created_at'])
  • @ilhank 仍然没有解决它。它给了我这个: dateutil.parser._parser.ParserError: Unknown string format: ['2020-07-24T20:41:14Z']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2019-12-10
  • 2021-12-27
  • 1970-01-01
  • 2020-03-14
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多