在pandas中使用Series()转换需要帮助

时间:2015-03-17 10:29:29

标签: python pandas

我是python和pandas的新手。我正在做一些我无法发现的系列转换错误

我有一个数据框,其日期列为CFB_FECHAINICIO,我在新列'fecha'中将其格式化为DateTimeIndex:

    df['fecha']= pd.DatetimeIndex(df.CFB_FECHAINICIO)
    df.fecha.head()
    0          2015-01-01 21:44:01
    1   2015-01-02 22:50:50.867000
    2   2015-01-05 00:26:04.387000
    3          2015-01-07 00:10:03
    4          2015-01-07 23:47:18
    Name: fecha, dtype: datetime64[ns]

所以我的datetime64列索引似乎没问题。

我想在时间序列中留下另一个专栏,df.MG

    ts = pd.Series(df.MG.dropna())
    ts.head()
    20    4.60
    29    4.67
    33    4.41
    34    4.44
    35    4.56
    Name: MG, dtype: float64

但是当我使用'fecha'作为索引时,ts值显示为NaN

    ts = pd.Series(df.MG.dropna(),index=df.fecha.dropna())
    ts.head()
    2015-01-02 22:50:50.867000   NaN
    2015-01-08 23:08:30          NaN
    2015-01-09 21:46:14          NaN
    2015-01-14 23:28:13          NaN
    2015-01-29 00:24:46          NaN
    Name: MG, dtype: float64

我已经确认所有值都显示为NaN,而不仅仅是第一个。 我有什么不对的任何线索? 提前致谢

1 个答案:

答案 0 :(得分:1)

编辑:我找到了一个解决方案,不确定它是否是最好的,但它有效。我在这里发布,以防它可以提供帮助,或者你们中的任何一个找到更好的。

df.set_index('fecha',inplace=True)
ts = pd.Series(df.MG.dropna())
ts.head()
fecha
2015-01-29 00:24:46    4.60
2015-02-10 23:24:50    4.67
2015-02-17 00:20:35    4.41
2015-02-18 00:18:38    4.44
2015-02-18 22:58:48    4.56
Name: MG, dtype: float64