मेरा डेटाफ्रेम ऐसा दिखता है:

Time,User,value 2018-03-30T14:18:49.600,U101,23 2018-03-30T14:18:49.800,U102,22 2018-03-30T14:18:50.000,U101,24

मैं डेटाफ्रेम में कॉलम Time में मिलीसेकंड में स्ट्रिंग टाइमस्टैम्प को युग में बदलना चाहता हूं। मैं सूचियों की सूची में मूल्यों को सहेजकर और प्रत्येक पंक्ति पर पुनरावृति करके ऐसा करने में सक्षम हूं। लेकिन मुझे इस तरह के एक कुशल तरीके की आवश्यकता है, मैं डेटाफ्रेम में ही स्ट्रिंग समय को युग के समय में बदल सकता हूं। अग्रिम में धन्यवाद।

4
Swati 3 अप्रैल 2018, 12:05

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि कन्वर्ट की जरूरत है to_datetime, फिर numpy array तक कास्ट करके int64 और अंतिम भाग 10**6 से करें क्योंकि मूल स्वरूप nanoseconds में है:

df['Time'] = pd.to_datetime(df['Time']).values.astype(np.int64) // 10**6
print (df)
            Time  User  value
0  1522419529600  U101     23
1  1522419529800  U102     22
2  1522419530000  U101     24
4
jezrael 3 अप्रैल 2018, 09:14

मुझे नहीं पता कि आपके लिए 'युग' क्या है, लेकिन सामान्य तौर पर pandas.apply फ़ंक्शन वही है जो आप चाहते हैं। यह ठीक उसी तरह काम करता है जैसे map पायथन बिलिन फंक्शन में है। (यह मानते हुए कि timestamp.epoch टाइमस्टैम्प का युग लौटाता है)

import datetime as dt 
def helper(val):
   time = dt.datetime.strptime(dtstring, '%Y-%m-%d %H:%M:%S.%f')
   return dt.epoch()
df['Time'] = df['Time'].apply(helper)
0
mzoll 3 अप्रैल 2018, 09:16