【发布时间】:2017-12-23 17:12:16
【问题描述】:
首先让我说我对 numpy 和 pandas 还很陌生。我正在尝试构建一个 pandas 数据框,但我不确定我是否以适当的方式做事。
我的设置是我有一个大的 .Net 对象列表(我几乎无法控制),我想使用 pandas 数据框从中构建一个时间序列。我有一个例子,我用一个简化的占位符类替换了 .Net 类,只是为了演示。代码中的listOfthings 基本上是我从.Net 得到的,我想把它转换成pandas 数据框。
我的问题是:
- 我首先构造一个 numpy 数组来构造数据帧。这是必要的吗?此外,这个数组没有我期望的大小 1000x2。有没有更好的方法在这里使用 numpy?
- 此代码不起作用,因为我似乎无法将字符串转换为 datetime64。这让我很困惑,因为字符串是 ISO 格式,当我尝试像这样解析它时它可以工作:
np.datetime64(str(np.datetime64('now','us')))。
代码示例:
import numpy as np
import pandas as pd
class PlaceholderClass:
def time(self):
return str(np.datetime64('now', 'us'))
def value(self):
return 100*np.random.random_sample()
listOfThings = [PlaceholderClass() for i in range(1000)]
arr = np.array([(x.time(), x.value()) for x in listOfThings], dtype=[('time', np.datetime64), ('value', np.float)])
dataframe = pd.DataFrame(data=arr['value'], index=arr['time'])
提前致谢
【问题讨论】: