2017-08-07 168 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