1
votes

Comment convertir Datetime en chaîne en Python?

Je veux créer un graphique en courbes avec ce code:

{'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}}

et la sortie de sentiment_dict est

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')

À partir de ce sentiment_dict, comment faire un nouveau dict mais la clé (qui est maintenant datetime) est changée en une chaîne?


0 commentaires

3 Réponses :


2
votes

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

Ex:

{'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}}

Résultat:

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()})


0 commentaires

0
votes

Pour convertir un objet DateTime en chaîne, vous pouvez utiliser DateTime.strftime (FORMAT_STRING):

import datetime

x = datetime.datetime.now()

print(x.strftime("%H:%M:%S")) 

Vous pouvez l'essayer ici https://repl.it/repls/ImmaterialAlarmingGenre

Pour plus d'informations sur FORMAT_STRING voir: https://www.w3schools.com/python/python_datetime.asp


0 commentaires

0
votes

Vous pouvez ajouter cette ligne avant d'analyser datafrmae dans le dictionnaire:

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')


0 commentaires