2014-03-02 153 views
4

我無法轉換列的dtype。我從雅虎財務加載一個CSV文件。熊貓將dtype對象轉換爲字符串

dt = pd.read_csv('data/Tesla.csv') 

這給了我以下信息:

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 923 entries, 0 to 922 
Data columns (total 7 columns): 
Date   923 non-null object 
Open   923 non-null float64 
High   923 non-null float64 
Low   923 non-null float64 
Close  923 non-null float64 
Volume  923 non-null int64 
Adj Close 923 non-null float64 
dtypes: float64(5), int64(1), object(1) 

我嘗試將日期轉換爲字符串,但無論我嘗試它不工作。我試圖循環行並用str()將其轉換。我曾試圖改變對象的D型與dt['Date'].apply(str)和我已經嘗試了特殊的D型對象,並使用:

types={'Date':'str','Open':'float','High':'float','Low':'float','Close':'float','Volume':'int','Adj Close':'float'} 
dt = pd.read_csv('data/Tesla.csv', dtype=types) 

,但似乎沒有奏效。

我用熊貓版本0.13.1

+1

' 'object'' dtype如何表示變長字符串。你究竟在做什麼? – Jeff

+0

我想比較數據框中的日期和輸入字段給出的日期,這是一個字符串。我需要比較兩者以向用戶提供正確的信息。 –

回答

3

日期轉換爲日期時間將讓你輕鬆地比較用戶輸入的日期與您的數據的日期。

#Load in the data 
dt = pd.read_csv('data/Tesla.csv') 

#Change the 'Date' column into DateTime 
dt['Date']=pd.to_datetime(dt['Date']) 

#Find a Date using strings 
np.where(dt['Date']=='2014-02-28') 
#returns  (array([0]),) 

np.where(dt['Date']=='2014-02-21') 
#returns (array([5]),) 

#To get the entire row's information 
index = np.where(dt['Date']=='2014-02-21')[0][0] 
dt.iloc[index] 

#returns: 
Date   2014-02-21 00:00:00 
Open      211.64 
High      213.98 
Low      209.19 
Close      209.6 
Volume     7818800 
Adj Close     209.6 
Name: 5, dtype: object 

所以,如果你想爲循環做了,你可以創建日期列表或numpy的數組,然後遍歷它們,更換日期與你的價值指數:

input = np.array(['2014-02-21','2014-02-28']) 
for i in input: 
    index = np.where(dt['Date']==i)[0][0] 
    dt.iloc[index] 
+0

的數據可以在這裏找到[鏈接](http://finance.yahoo.com/q/hp?s=TSLA+Historical+Prices) –

+0

的數據可以在這裏找到[鏈接](http:// finance。 yahoo.com/q/hp?s=TSLA+Historical+Prices)我使用pd.to_datetime() 將日期列轉換爲循環遍歷我使用的行: for i in range(len(tesla), 5): 打印類型((tesla.iloc [[i]] ['Date'])) 這給了我一個類型變量: 我也轉換與datetime字符串: datetime.strptime('2013-08-20','%Y-%M-%d') 這給我 現在我需要比較t他將字符串轉換爲for循環中的值。 –

+0

我越來越近了,我只是想要獲取所有特定行中的信息。這就是爲什麼在for循環中使用tesla.iloc [[i]] ['Date']。 –