我有一个看起来像这样的数据框
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是存储在矩阵中的值
答案 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
列的hour
和df.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所述。当pandas
或NaN
没有值时,usd
会获得day
个值。
hour