2016-10-26 110 views
0

我真的需要您的幫助: 我附加了一個Excel文件 - 並試圖以正確的方式(考慮幾秒鐘)對第二列(「時間」)進行排序。 我不好意思承認我有多少時間被浪費在這個..如何使用Python對CSV列文件進行排序

PAPER TIME ACTION PRICE AMOUNT 

1026 01/12/2013 9:03 BID 124 84,888 

1026 18/04/2013 9:01 BID 120.5 14,888 

1026 19/01/2013 9:02 BID 121 24,888 

1026 21/04/2013 9:05 BID 122 44,888 

1026 20/04/2013 9:04 BID 121.5 34,888 

1026 15/10/2013 9:06 BID 123.5 74,888 

1026 17/04/2013 9:00 BID 120 4,888 

1026 22/04/2013 9:07 BID 122.5 54,888 

1026 27/04/2013 9:08 BID 123 64,888 

存儲在一個名爲yaniv123.csv CSV文件,這個數據和列是E(僅10行)之間。如何導入此文件並以正確的方式對B列(TIME)進行排序。 請幫助我:-) 許多非常感謝!

+0

你能後至今你已經嘗試了代碼,並告訴我們,哪裏就有奇蹟錯了? - 以及將輸入作爲實際的CSV發佈,您的示例目前只有兩列,而不是5.即使我們將您的輸入示例視爲「空間混亂」,那麼您調用它的第二列(或「B」)是**不是**時間,這是日期。第三列是時間。 - 請更新您的問題,以便我們能夠回答有意義的問題。 –

+0

你對Adwin - 我的壞!這裏是校正表: PAPER,\t TIME,\t ACTION,\t PRICE,\t AMOUNT, 1026,2013年1月12日\t 9:03,\t BID,\t 124, 1026,\t 18/04/2013 9:01,\t BID,\t 120.5,\t 14888, 1026,\t 19/04/2013 9:02,\t BID,\t 121,\t 24888, 1026,\t 21/04/2013 9 :05,\t BID,\t 122,\t 44888, 1026,\t 20/04/2013 9:04,\t BID,\t 121.5,\t 34888, 1026,\t 15/10/2013 9:06,\t BID,\t 123.5 ,\t 74888, 1026,\t 17/04/2013 9:00,\t BID,\t 120,\t 4888, 1026,\t 22/04/2013 9:07,\t BID,\t 122.5,\t 54888, 1026,\t 27/04/2013 9:08,\t BID,\t 123,\t 64888, – yaniv123

回答

2

正如@Edwin van Mierlo提到的,標題需要調整。您可以使用逗號分隔,但您需要確保刪除逗號。如果沒有,則使用分號來代替:

紙; TIME;行動;價格;金額

1026; 2013年1月12日9:03;投標; 124; 84888

1026; 18/04/2013 9:01; BID; 120.5; 14888

1026; 19/01/2013 9:02; BID; 121; 24888

1026; 21/04/2013 9:05; BID; 122; 44,888

1026; 20/04/2013 9:04; BID; 121.5; 34,888

1026; 15/10/2013 9:06; BID; 123.5; 74888

1026; 17/04/2013 9:00; BID; 120; 4888

1026; 22/04/2013 9:07;投標; 122.5; 54888

1026; 27/04/2013 9:08;出價; 123; 64888

然而,如果一切正常調整,那麼你可以使用Python熊貓庫。

import pandas as pd  
df = pd.read_csv('sample.csv', parse_dates=True, delimiter=";") 
df['TIME'] = pd.to_datetime(df.TIME) 
print(df.head()) 
print(df.sort('TIME')) 

輸出應爲: PAPER TIME ACTION PRICE AMOUNT

1026 2013年1月12日9:03 BID 124.0 84888

1026 15/10/2013 9:06 BID 123.5 74888

1026 17/04/2013 9:00 BID 120.0 4,888

1026 18/04/2013 9:01 BID 120.5 14,888

1026 19/01/2013 9:02 BID 121.0 24888

1026 20/04/2013 9:04 BID 121.5 34888

1026 21/04/2013 9:05 BID 122.0 44888

1026 22/04/2013 9:07 BID 122.5 54888

1026 27/04/2013 9:08 BID 123.0 64888

+0

非常感謝您找到幫助我的時間。 請注意,儘管您設法對第二列進行排序(從2013年12月1日9點03分開始),但沒有正確排序。 我們知道十二月一日是十二月一日。 任何想法如何排序包括日期和時間正確的列? – yaniv123

+2

對不起。只需將時間轉換行更新爲df ['TIME'] = pd.to_datetime(df.TIME,dayfirst = True) – H123098

相關問題