के माध्यम से डेटाटाइम को प्रभावी रूप से टाइमस्टैम्प में कनवर्ट करें। मेरे पास कुछ (सैकड़ों) पंक्तियों के साथ डेटाफ्रेम है। और मैं डेटाटाइम को प्रभावी ढंग से टाइमस्टैम्प में कनवर्ट करना चाहता हूं। मैं यह कैसे कर सकता हूं?पाइथन पांडा डीटी एक्सेसर
मेरे नमूना df
:
df = pd.DataFrame(index=pd.DatetimeIndex(start=dt.datetime(2016,1,1,0,0,1),
end=dt.datetime(2016,1,2,0,0,1), freq='H'))\
.reset_index().rename(columns={'index':'datetime'})
df.head()
datetime
0 2016-01-01 00:00:01
1 2016-01-01 01:00:01
2 2016-01-01 02:00:01
3 2016-01-01 03:00:01
4 2016-01-01 04:00:01
अब मैं .apply()
साथ टाइमस्टैम्प मूल्य-दर-मूल्य के लिए दिनांक परिवर्तित, लेकिन यह एक बहुत लंबे समय (कुछ घंटे) अगर मैं कुछ (के सैकड़ों) है लेता लाख पंक्तियां:
df['ts'] = df[['datetime']].apply(lambda x: x[0].timestamp(), axis=1).astype(int)
df.head()
datetime ts
0 2016-01-01 00:00:01 1451602801
1 2016-01-01 01:00:01 1451606401
2 2016-01-01 02:00:01 1451610001
3 2016-01-01 03:00:01 1451613601
4 2016-01-01 04:00:01 1451617201
उपरोक्त परिणाम मैं चाहता हूं।
अगर मैं pandas.Series
की .dt
एक्सेसर इस्तेमाल करने की कोशिश तो मैं त्रुटि संदेश मिलता है:
df['ts'] = df['datetime'].dt.timestamp
AttributeError: 'DatetimeProperties' object has no attribute 'timestamp'
अगर मैं जैसे बनाने का प्रयास करें। .dt
एक्सेसर साथ datetimes की तारीख भागों तो यह और अधिक तेजी से .apply()
का उपयोग कर तो यह है:
df['date'] = df['datetime'].dt.date
df.head()
datetime ts date
0 2016-01-01 00:00:01 1451602801 2016-01-01
1 2016-01-01 01:00:01 1451606401 2016-01-01
2 2016-01-01 02:00:01 1451610001 2016-01-01
3 2016-01-01 03:00:01 1451613601 2016-01-01
4 2016-01-01 04:00:01 1451617201 2016-01-01
मैं टाइमस्टैम्प के साथ कुछ ऐसा ही चाहते हैं ...
लेकिन मैं वास्तव में आधिकारिक दस्तावेज समझ में नहीं आता: यह "Converting to Timestamps" के बारे में बात करता है लेकिन मुझे वहां कोई टाइमस्टैम्प नहीं दिख रहा है; यह सिर्फ pd.to_datetime()
साथ datetime को बदलने लेकिन टाइमस्टैम्प के नहीं के बारे में बात ...
pandas.Timestamp
निर्माता भी (नीचे त्रुटि के साथ रिटर्न) काम नहीं करता:
df['ts2'] = pd.Timestamp(df['datetime'])
TypeError: Cannot convert input to Timestamp
pandas.Series.to_timestamp
भी कुछ पूरी तरह से बनाता है मैं चाहता हूं कि अलग:
df['ts3'] = df['datetime'].to_timestamp
df.head()
datetime ts ts3
0 2016-01-01 00:00:01 1451602801 <bound method Series.to_timestamp of 0 2016...
1 2016-01-01 01:00:01 1451606401 <bound method Series.to_timestamp of 0 2016...
2 2016-01-01 02:00:01 1451610001 <bound method Series.to_timestamp of 0 2016...
3 2016-01-01 03:00:01 1451613601 <bound method Series.to_timestamp of 0 2016...
4 2016-01-01 04:00:01 1451617201 <bound method Series.to_timestamp of 0 2016...
धन्यवाद !!
'df.datetime.values.astype (np.int64)' तेज़ – piRSquared
@piRSquared - धन्यवाद। – jezrael
धन्यवाद! यह डेटाटाइम कॉलम को टाइमस्टैम्प में परिवर्तित करता है, डेटाफ्रेम के साथ +300 मिलियन पंक्तियों के साथ 5 सेकंड कम होता है !!! – ragesz