2015-02-23 95 views
1

我有2个数据帧,df1df2大小相同,df1date列,df2float列。当我做到以下几点:来自数据帧的时间序列丢失值

series = pandas.Series(df2['float'], df1['date']) 

时间序列上的值都是NaN。在做之前我已经检查过两个数据帧都有数据。我究竟做错了什么?

+0

你在这里做什么?你想要浮点数或日期值作为索引,而另一个作为数据? – EdChum 2015-02-23 10:53:25

+0

日期作为索引,因此第二个参数。 – 2015-02-23 11:15:52

+0

我不知道这是否是一个错误,但以下工作:'系列= pandas.Series(df2 ['float']。值,df1 ['date'])' – EdChum 2015-02-23 11:17:13

回答

3

这看起来像一个错误对我说:

In [29]: 

df = pd.DataFrame({'date':[dt.datetime.now()]}) 
print(df) 
df1 = pd.DataFrame({'float':[2.1145]}) 
df1 
         date 
0 2015-02-23 11:23:03.550538 
Out[29]: 
    float 
0 2.1145 
In [30]: 

pd.Series(df1['float'], df['date']) 
Out[30]: 
date 
2015-02-23 11:23:03.550538 NaN 
Name: float, dtype: float64 

它的工作原理,如果你调用属性.values

In [31]: 

pd.Series(df1['float'].values, df['date']) 
Out[31]: 
date 
2015-02-23 11:23:03.550538 2.1145 
dtype: float64 

这看起来像一个普通的错误:

In [34]: 

df3 = pd.DataFrame({'int':[323]}) 
df3 
Out[34]: 
    int 
0 323 

的以下组合全部失败:

In [39]: 

pd.Series(df2['float'], df3['int']) 
Out[39]: 
int 
323 NaN 
Name: float, dtype: float64 
In [40]: 

pd.Series(df['date'], df2['float']) 
Out[40]: 
float 
1.21554 NaT 
Name: date, dtype: datetime64[ns] 

In [41]: 

pd.Series(df3['int'], df2['float']) 
Out[41]: 
float 
1.21554 NaN 
Name: int, dtype: float64 
+1

在这里报告:https:// github .COM/pydata /熊猫/问题/ 9456。它其实是一个很小的修复。拉请求欢迎! – Jeff 2015-02-23 12:14:15

+0

@杰夫谢谢杰夫,正试图通过这一步,看看发生了什么,似乎发生时,它通过超级通话:https://github.com/pydata/pandas/blob/master/pandas/core /series.py#L159,如果我在Win 7 64位(或购买Mac)上得到这个吸盘以正确编译,有时候我会看看是否可以贡献更多 – EdChum 2015-02-23 12:18:23