2016-08-07 38 views
0

我是Python編程語言的新手。對於我的學習,我拿出了包含orderid,product_name,no_items,金額,total_amount,sale_time的示例銷售數據。我正在使用熊貓來加載數據。在Python中添加來自現有unix時間戳字段數據框的時間戳相關字段

import pandas as pd 
sale_data = pd.read_csv("test_sale_data.csv") 

sale_time領域擁有UNIX時間,我使用to_datetime功能轉換成可讀的日期時間格式。

sale_data['sale_time_new'] = to_datetime(sale_data['sale_time'],time='s') 

# 1284101485 --> 2010-09-10 06:51:25 

所以我想時間戳相關領域添加到現有的數據幀sale_data像年份,季度YearQuarter,月,YearMonth,周,YEARWEEK,日期,星期,datehour,小時

1284101485 --> 2010, Q3, 2010-Q3, 09, 201009, 36, 2010-WW36, 2010-09-10, 10, 2010-09-10 06:00:00 , 06 

我該怎麼做python?

回答

0

在熊貓中使用.dt accessor;所有的these components都可用。爲您的使用案例:

sale_data['sale_time_new'] = to_datetime(sale_data['sale_time'],time='s') 

# Year 
sale_data['sale_time_new'].dt.year 
# Quarter 
sale_data['sale_time_new'].dt.quarter 
# YearQuarter 
'{y}-{q}'.format(y=sale_data['sale_time_new'].dt.year, q=sale_data['sale_time_new'].dt.year) 
# Month 
sale_data['sale_time_new'].dt.month 
# YearMonth 
sale_data['sale_time_new'].dt.year*100 + sale_data['sale_time_new'].dt.month 
# Week 
sale_data['sale_time_new'].dt.week 
# YearWeek 
'{y}-WW{w}'.format(y=sale_data['sale_time_new'].dt.year, w=sale_data['sale_time_new'].dt.week) 
# date 
sale_data['sale_time_new'].dt.date 
# day 
sale_data['sale_time_new'].dt.day 
# datehour 
'{y}-{m}-{d} {h}:00:00'.format(y=sale_data['sale_time_new'].dt.year, m=sale_data['sale_time_new'].dt.month, d=sale_data['sale_time_new'].dt.day, h=sale_data['sale_time_new'].dt.hour) 
# hour 
sale_data['sale_time_new'].dt.hour 
+0

謝謝Kartik。 另外,如果hour <= 8,那麼我會根據「hour」字段和「hour」字段添加另一個字段,如0,1,2,3,4,5,... 23 然後'Bucket 1 ' elif hour> = 9 and hour <= 10 then'Bucket 2' elif hour> = 11 and hour <= 17 then'Bucket 3' else'Bucket 4 如何在創建新字段時編寫此條件? – user2517214

+0

你可以使用嵌套的'.where'或'.mask'方法來完成它。或者你可以只用手寫條件。它很容易做到。查找熊貓數據框在哪裏。如果您認爲我的回答對您有幫助,請標記爲已回答。 – Kartik

+0

我是這個論壇的新手,如何將您的答覆標記爲答案。 – user2517214