2016-07-25 102 views
1

我有一個3000萬行數據集,我需要將大量數據轉換規則應用於。對於這個任務,我試圖探索熊貓作爲一種可能的解決方案,因爲我目前的解決方案不是很快。使用熊貓來操縱多列

目前,我正在逐行處理數據集,然後將其導出到磁盤上的新表(CSV文件)。

有5種功能的用戶可以在給定列內對數據執行:

  1. 刪除空白
  2. 大寫所有文本
  3. 格式日期
  4. 代替字母/數字
  5. 替換word

我的第一個念頭是使用數據框的apply或applmap,但這隻能用於單個列。

有沒有辦法使用apply或applymap到許多列而不是隻有一個? 有沒有更好的工作流程,我應該考慮的,因爲我可以做的操作,以1:n列在我的數據集,其中列的最大數量由目前的30

謝謝

回答

2

您可以使用列表理解與concat如果需要應用一些功能只使用了Series

import pandas as pd 

data = pd.DataFrame({'A':[' ff ','2','3'], 
        'B':[' 77','s gg','d'], 
        'C':['s',' 44','f']}) 

print (data) 
     A  B C 
0 ff  77 s 
1  2 s gg 44 
2  3  d f 

print (pd.concat([data[col].str.strip().str.capitalize() for col in data], axis=1)) 
    A  B C 
0 Ff 77 S 
1 2 S gg 44 
2 3  D F 
+0

不會因此受到影響的表現給我的數據集的大小?如果我不得不循環三千五百萬次,說5或6次? –

+0

是的,它是最快的解決方案,請參閱類似答案中的[timing](http://stackoverflow.com/a/38562413/2901002)。 – jezrael

+0

好的,我會嘗試一下,讓你知道我是怎麼做出來的!謝謝 –