2017-05-28 85 views
0

我的熊貓數據框包含兩列(系列對象)。它們是具有數據類型系列的形式H:M:S。我想找出兩個時間序列之間明顯的區別,找出一天的長度。也就是說,如何操作熊貓數據框的系列對象?

H2:M2:S2 - H1:M1:S1

我是新來的蟒蛇。有什麼建議麼?

這裏是我的數據框:

df.head() 

UNIXTime Data Time Radiation Temperature Pressure Humidity WindDirection(Degrees) Speed TimeSunRise TimeSunSet 
0 1475229326 9/29/2016 12:00:00 AM 23:55:26 1.21 48 30.46 59 177.39 5.62 06:13:00 18:13:00 
1 1475229023 9/29/2016 12:00:00 AM 23:50:23 1.21 48 30.46 58 176.78 3.37 06:13:00 18:13:00 
2 1475228726 9/29/2016 12:00:00 AM 23:45:26 1.23 48 30.46 57 158.75 3.37 06:13:00 18:13:00 
3 1475228421 9/29/2016 12:00:00 AM 23:40:21 1.21 48 30.46 60 137.71 3.37 06:13:00 18:13:00 
4 1475228124 9/29/2016 12:00:00 AM 23:35:24 1.17 48 30.46 62 104.95 5.62 06:13:00 18:13:00 
print(df.dtypes) 

UNIXTime     int64 
Data      object 
Time      object 
Radiation     float64 
Temperature     int64 
Pressure     float64 
Humidity     int64 
WindDirection(Degrees) float64 
Speed      float64 
TimeSunRise    object 
TimeSunSet     object  
dtype: object 


df.TimeSunSet.__dict__ 
{'_cacher': ('TimeSunSet', 
    <weakref at 0x000000000B5C04F8; to 'DataFrame' at 0x000000000B556438>), 
'_data': SingleBlockManager 
Items: RangeIndex(start=0, stop=32686, step=1) 
ObjectBlock: 32686 dtype: object, 
'_index': RangeIndex(start=0, stop=32686, step=1), 
'_item_cache': {}, 
'_name': 'TimeSunSet', 
'_subtyp': 'series', 
'is_copy': None} 

我想找到TimeSunSet - TimeSunRise之間的差異。這是最後一列和最後一列之間的差異。我在windows anaconda上使用python 3.5.1。

+0

'dtype'是完全不同的東西。你的意思是'datetime'或'timedelta'對象嗎? –

+0

向我們展示數據幀... –

回答

1

我想你需要轉換列to_timedelta然後減去:

df['difference'] = pd.to_timedelta(df['TimeSunSet']) - pd.to_timedelta(df['TimeSunRise']) 
print (df) 
    UNIXTime     Data  Time Radiation Temperature \ 
0 1475229326 9/29/2016 12:00:00 AM 23:55:26  1.21   48 
1 1475229023 9/29/2016 12:00:00 AM 23:50:23  1.21   48 
2 1475228726 9/29/2016 12:00:00 AM 23:45:26  1.23   48 
3 1475228421 9/29/2016 12:00:00 AM 23:40:21  1.21   48 
4 1475228124 9/29/2016 12:00:00 AM 23:35:24  1.17   48 

    Pressure Humidity WindDirection(Degrees) Speed TimeSunRise TimeSunSet \ 
0  30.46  59     177.39 5.62 06:13:00 18:13:00 
1  30.46  58     176.78 3.37 06:13:00 18:13:00 
2  30.46  57     158.75 3.37 06:13:00 18:13:00 
3  30.46  60     137.71 3.37 06:13:00 18:13:00 
4  30.46  62     104.95 5.62 06:13:00 18:13:00 

    difference 
0 12:00:00 
1 12:00:00 
2 12:00:00 
3 12:00:00 
4 12:00:00 
+0

它似乎工作,但我需要產生的「差異」數據類型編號(不是timedelta) – Bala

+0

我認爲你可以使用[this](http://pandas.pydata.org/pandas (dd ['TimeSunSet']) - pd.to_timedelta(df ['TimeSunRise']))/ np.timedelta64(1,'D' )'或'(pd.to_timedelta(df ['TimeSunSet']) - pd.to_timedelta(df ['TimeSunRise']))。dt.total_seconds()'參見http://pandas.pydata.org/pandas-docs /stable/generated/pandas.Series.dt.total_seconds.html – jezrael

+0

謝謝。這個對我有用。 – Bala