2017-08-07 391 views

回答

1

我認爲你從列Timestamp,選擇列Price和情節需要set_index

#convert column to floats 
df['Price'] = df['Price'].astype(float) 
df.set_index('Timestamp')['Price'].plot() 

#if some non numeric data, convert them to NaNs 
df['Price'] = pd.to_numeric(df['Price'], errors='coerce') 
df.set_index('Timestamp')['Price'].plot() 

並獲得NaNs如果使用DataFrame構造,因爲數據不對齊 - 的df指數值與Timestamp列不一樣。

+0

我認爲它會改變第一個DataFrame。我不需要在第一個數據幀上進行更改。但是不要刪除這段代碼,它可以對其他人有所幫助 –

+0

如果沒有分配輸出,則沒有變化。 – jezrael

+0

空'DataFrame':無數字數據繪圖 我收到這種錯誤 –

0

你可以通過添加.values來做到這一點,而如何創建一個系列呢?

#df1 = pd.DataFrame(df.Price.values, df.Timestamp) 
serie = pd.Series(df.Price.values, df.Timestamp) 

看到它在這裏回答:pandas.Series() Creation using DataFrame Columns returns NaN Data entries

完整的示例:

import pandas as pd 
import numpy as np 
import datetime 
import matplotlib.pyplot as plt 

df = pd.DataFrame(columns=["Price","Timestamp","Random"]) 
df.Price = np.random.randint(100, size = 10) 
df.Timestamp = [datetime.datetime(2000,1,1) + \ 
      datetime.timedelta(days=int(i)) for i in np.random.randint(100, size = 10)] 
df.Random = np.random.randint(10, size= 10) 

serie = pd.Series(df.Price.values, df.Timestamp) 

serie.plot() 
plt.show() 

enter image description here


差異

print("{}\n{}".format(type(df.Price), type(df.Price.values))) 
<class 'pandas.core.series.Series'> # does not work 
<class 'numpy.ndarray'> # works