将数据帧转换为numpy矩阵,其中索引存储在dataframe中

时间:2017-05-02 17:30:01

标签: python pandas numpy

我有一个看起来像这样的数据框

var lineFunction = d3.line().x(function(d) { return x(d.date); }).y(function(d) { return y(d.value); })

                    var lineGraph = svg.append("path").attr("d",lineFunction(data)).attr("stroke", "blue")
                        .attr("stroke-width", 2).attr("fill", "none").attr("class","dotsLine");

考虑到这一点,我将如何构建一个numpy 2d矩阵,其中一小时是一个轴日是另一个轴,然后usd是存储在矩阵中的值

3 个答案:

答案 0 :(得分:4)

考虑数据框df

df = pd.DataFrame(dict(
        time=pd.date_range('2015-08-30', periods=14000, freq='H'),
        usd=(np.random.randn(14000) / 100 + 1.0005).cumprod()
    ))

然后我们可以使用date列的hourdf.time以及unstack来设置索引。我们采用此结果的values来访问numpy数组。

a = df.set_index([df.time.dt.date, df.time.dt.hour]).usd.unstack().values

答案 1 :(得分:3)

我会做一个pivot_table并将数据保留为pandas DataFrame,但如果你不想要标签,那么转换为numpy数组是微不足道的。

import pandas as pd
data = <data>
data.pivot_table(values = 'usd', index = 'hour', columns = 'day').values

编辑:谢谢@pyRSquared的“价值”提示。 (将np.array(数据)更改为df ...值)

答案 2 :(得分:2)

您可以使用pivot的{​​{1}}功能,如here所述。当pandasNaN没有值时,usd会获得day个值。

hour