【问题标题】:How to Convert Datetime to String in Python?如何在 Python 中将日期时间转换为字符串?
【发布时间】:2020-01-02 19:46:14
【问题描述】:

我想用这段代码做一个折线图:

df = pd.DataFrame.from_dict({ 'sentencess' : sentencess, 'publishedAts' : publishedAts, 'hasil_sentimens' : hasil_sentimens })
df.to_csv('chart.csv')

df['publishedAts'] = pd.to_datetime(df['publishedAts'], errors='coerce')

by_day_sentiment = df.groupby([pd.Grouper(key='publishedAts',freq='D'),'hasil_sentimens']).size().unstack('hasil_sentimens')

sentiment_dict = by_day_sentiment.to_dict('dict')

sentiment_dict 的输出是

{'Negatif ': {Timestamp('2019-08-26 00:00:00', freq='D'): 2.0, Timestamp('2019-08-27 00:00:00', freq='D'): 4.0, Timestamp('2019-08-28 00:00:00', freq='D'): 2.0, Timestamp('2019-08-29 00:00:00', freq='D'): 3.0}, 'Netral ': {Timestamp('2019-08-26 00:00:00', freq='D'): 1.0, Timestamp('2019-08-27 00:00:00', freq='D'): 3.0, Timestamp('2019-08-28 00:00:00', freq='D'): 1.0, Timestamp('2019-08-29 00:00:00', freq='D'): 3.0}, 'Positif ': {Timestamp('2019-08-26 00:00:00', freq='D'): nan, Timestamp('2019-08-27 00:00:00', freq='D'): nan, Timestamp('2019-08-28 00:00:00', freq='D'): nan, Timestamp('2019-08-29 00:00:00', freq='D'): 1.0}}

从那个sentiment_dict,如何创建一个新的dict,但是键(现在是日期时间)变成了一个字符串?

【问题讨论】:

    标签: python string pandas datetime dictionary


    【解决方案1】:

    使用strftime('%Y-%m-%d %H:%M:%S')

    例如:

    from pandas import Timestamp
    from numpy import nan
    data = {'Negatif ': {Timestamp('2019-08-26 00:00:00', freq='D'): 2.0, Timestamp('2019-08-27 00:00:00', freq='D'): 4.0, Timestamp('2019-08-28 00:00:00', freq='D'): 2.0, Timestamp('2019-08-29 00:00:00', freq='D'): 3.0}, 'Netral ': {Timestamp('2019-08-26 00:00:00', freq='D'): 1.0, Timestamp('2019-08-27 00:00:00', freq='D'): 3.0, Timestamp('2019-08-28 00:00:00', freq='D'): 1.0, Timestamp('2019-08-29 00:00:00', freq='D'): 3.0}, 'Positif ': {Timestamp('2019-08-26 00:00:00', freq='D'): nan, Timestamp('2019-08-27 00:00:00', freq='D'): nan, Timestamp('2019-08-28 00:00:00', freq='D'): nan, Timestamp('2019-08-29 00:00:00', freq='D'): 1.0}}
    
    print({k: {m.strftime('%Y-%m-%d %H:%M:%S'): v for m, v in v.items()} for k, v in data.items()})
    

    输出:

    {'Negatif ': {'2019-08-26 00:00:00': 2.0,
                  '2019-08-27 00:00:00': 4.0,
                  '2019-08-28 00:00:00': 2.0,
                  '2019-08-29 00:00:00': 3.0},
     'Netral ': {'2019-08-26 00:00:00': 1.0,
                 '2019-08-27 00:00:00': 3.0,
                 '2019-08-28 00:00:00': 1.0,
                 '2019-08-29 00:00:00': 3.0},
     'Positif ': {'2019-08-26 00:00:00': nan,
                  '2019-08-27 00:00:00': nan,
                  '2019-08-28 00:00:00': nan,
                  '2019-08-29 00:00:00': 1.0}}
    

    【讨论】:

      【解决方案2】:

      要将 DateTime 对象转换为字符串,您可以使用 DateTime.strftime(FORMAT_STRING):

      import datetime
      
      x = datetime.datetime.now()
      
      print(x.strftime("%H:%M:%S")) 
      

      你可以在这里试试https://repl.it/repls/ImmaterialAlarmingGenre

      有关 FORMAT_STRING 的更多信息,请参阅:https://www.w3schools.com/python/python_datetime.asp

      【讨论】:

        【解决方案3】:

        您可以在将 datafrmae 解析到字典之前添加此行:

        by_day_sentiment = df.groupby([pd.Grouper(key='publishedAts',freq='D'),'hasil_sentimens']).size().unstack('hasil_sentimens')
        
        by_day_sentiment['publishedAts'] = by_day_sentiment['publishedAts'].astype(object)
        
        sentiment_dict = by_day_sentiment.to_dict('dict')
        

        【讨论】:

          猜你喜欢
          • 2023-02-17
          • 2015-03-24
          • 1970-01-01
          • 1970-01-01
          • 2015-01-22
          • 2021-06-01
          • 1970-01-01
          • 2012-06-04
          • 1970-01-01
          相关资源
          最近更新 更多