web-dev-qa-db-fra.com

Comment convertir l'horodatage en chaîne dans Python

J'ai un problème avec le code suivant. J'obtiens une erreur "l'argument strptime () 1 doit être str, pas Timestamp"

Je suppose que ce que je dois faire est de convertir la date de l'horodatage en chaîne, mais je ne sais pas quoi faire.

class TweetAnalyzer:

    def tweets_to_data_frame(self,ElonMuskTweets):

        df = pd.DataFrame(data=[Tweet.text for Tweet in ElonMuskTweets],columns=['Tweets'])

        df['Text length'] = np.array ([len(Tweet.text)for Tweet in ElonMuskTweets])
        df['Date and time of creation'] = np.array ([Tweet.created_at for Tweet in ElonMuskTweets])
        df['Likes'] = np.array ([Tweet.favorite_count for Tweet in ElonMuskTweets])
        df['Retweets'] = np.array ([Tweet.retweet_count for Tweet in ElonMuskTweets])

        list_of_dates = []   
        list_of_times = []

        for date in df['Date and time of creation']:

            date_time_obj = datetime.strptime(date, '%Y-%m-%d %H:%M:%S') 
            list_of_dates.append(date_time_obj.date())  
            list_of_times.append(date_time_obj.time())

            df['Date'] = list_of_dates
            df['Time'] = list_of_times

            df['Date'] = pd.to_datetime(df['Date'])

            start_date = '2018-04-13'
            end_date = '2019-04-13'

            mask1 = (df['Date'] >= start_date) & (df['Date'] <= end_date)
            MuskTweets18_19 = df.loc[mask1]  

            return MuskTweets18_19.to_csv ('elonmusk_tweets.csv',index=False)

Je reçois l'erreur dans

date_time_obj = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')

Comment puis-je résoudre ce problème? Merci d'avance

3

Pouvez-vous contraindre le type de données à une chaîne pour effectuer ce calcul?

date_time_obj = datetime.strptime(str(date), '%Y-%m-%d %H:%M:%S') 
1
Paul Wildenhain

S'il indique que "l'argument strptime () 1 doit être str, pas Timestamp", il est probable que vous ayez déjà l'objet pandas.Timestamp , c'est-à-dire qu'il ne s'agit pas d'une chaîne mais d'une date-heure analysée , seulement il est au format Pandas, pas Python. Donc, pour convertir, utilisez ceci:

date_time_obj = date.to_pydatetime()

au lieu de date_time_obj = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')

1
adrtam