2017-06-06 133 views
2

我需要幫助轉換成蟒蛇/大熊貓日期時間格式。例如,我的時間都保存與以下行類似:轉換成熊貓的日期時間格式?

2017-01-01 05:30:24.468911+00:00 
..... 
2017-05-05 01:51:31.351718+00:00 

,我想知道這個與時間轉換成日期時間格式基本上是執行操作(如什麼是天的範圍內,最簡單的方法我數據集按時間將我的數據集分成塊,每次到另一次的時間差是多少)?如果這能讓事情變得更簡單,我不介意失去時代的一些重要性。非常感謝!

+1

你保存那些爲字符串?如果是這樣,你可以使用'strptime()'打出來表示爲對象的時間和對這些對象的成員做操作。 對象的成員將通過傳遞到方法格式化字符串來確定。更多信息請參見[此](https://docs.python.org/3.6/library/time.html#time.strptime)文檔。 – nerdenator

+0

是的,它們被保存爲字符串。對不起,沒有指定。我會嘗試strptime()。謝謝! –

回答

2

Timestamp WIL我爲你轉換它。

>>> pd.Timestamp('2017-01-01 05:30:24.468911+00:00') 
Timestamp('2017-01-01 05:30:24.468911+0000', tz='UTC') 

比方說,你有一個數據幀,包括您的時間戳列(姑且稱之爲stamp)。您可以在該列連同Timestamp使用apply

df = pd.DataFrame(
    {'stamp': ['2017-01-01 05:30:24.468911+00:00', 
       '2017-05-05 01:51:31.351718+00:00']}) 
>>> df 
    stamp 
0 2017-01-01 05:30:24.468911+00:00 
1 2017-05-05 01:51:31.351718+00:00 

>>> df['stamp'].apply(pd.Timestamp) 
0 2017-01-01 05:30:24.468911+00:00 
1 2017-05-05 01:51:31.351718+00:00 
Name: stamp, dtype: datetime64[ns, UTC] 

您還可以使用Timeseries

>>> pd.TimeSeries(df.stamp) 
0 2017-01-01 05:30:24.468911+00:00 
1 2017-05-05 01:51:31.351718+00:00 
Name: stamp, dtype: object 

一旦你有一個Timestamp對象,這是很有效的操縱。例如,您可以區分它們的值。

您可能還需要看看這個SO answer其中討論時區不知道值察覺。

2

假設我有兩個字符串2017-06-061944-06-06,我想在兩者之間找出差別(Python稱之爲timedelta)。

首先,我需要import datetime。然後,我需要得到這兩個字符串爲datetime對象:

>>> a = datetime.datetime.strptime('2017-06-06', '%Y-%m-%d') 
>>> b = datetime.datetime.strptime('1944-06-06', '%Y-%m-%d') 

這將使我們可以在算術函數使用的兩個datetime對象,將返回一個timedelta對象:

>>> c = abs((a-b).days) 

這將爲我們提供26663,並daystimedelta支持最大分辨率:documentation

1

由於熊貓標籤有:

df = pd.DataFrame(['2017-01-01 05:30:24.468911+00:00']) 
df.columns = ['Datetime'] 
df['Datetime'] = pd.to_datetime(df['Datetime'], format='%Y-%m-%d %H:%M:%S.%f', utc=True) 
print(df.dtypes)