2015-06-10 105 views
4

我正在使用熊貓Python模塊生成數據透視表報表。源數據包含大量以毫秒爲單位的讀數。如果毫秒數超過999,則該CSV文件中的值將包含逗號(例如1,234 = 1.234秒)。使用逗號轉換字符串使用Python熊貓編號

以下是我正在試圖運行報告:

import pandas as pd 
import numpy as np 

pool_usage = pd.read_csv("c:/foo/ds-dump.csv") 

# Add a column to the end that shows you where the data came from 
pool_usage["Source File"] = "ds-dump.csv" 

report = pool_usage.pivot_table(values=['Average Pool Size', 'Average Usage Time (ms)'], index=['Source File'], aggfunc=np.max) 

print(report) 

的問題是,對於平均使用時間(毫秒)的D型是一個對象,因此np.max功能會把它喜歡它的NaN的。因此,我從來沒有看到任何價值超過999

我試圖修復這樣的問題更大:

import pandas as pd 
import numpy as np 

pool_usage = pd.read_csv("c:/foo/ds-dump.csv") 

# Add a column to the end that shows you where the data came from 
pool_usage["Source File"] = "ds-dump.csv" 

# Convert strings to numbers if possible 
pool_usage = pool_usage.convert_objects(convert_numeric=True) 

report = pool_usage.pivot_table(values=['Average Pool Size', 'Average Usage Time (ms)'], index=['Source File'], aggfunc=np.max) 

print(report) 

這也將平均使用時間列的D型真正改變的浮動,但所有的大於999的值仍然像NaN一樣處理。

如何將平均使用時間列轉換爲浮點數,即使可能某些值可能包含逗號?

回答

7

read_csv函數採用可選的thousands參數。它默認爲None,所以你可以把它改成","有它承認1,2341234當讀取文件:

pd.read_csv("c:/foo/ds-dump.csv", thousands=",") 

指定持有毫秒值,那麼應該有int64數據類型,一旦該文件已被讀入記憶。

相關問題