下面的数据是从一个CSV格式的tick数据文件中读取的。我有一个字符串类型的"quotes"列,如下所示:
in[]:df['quotes']
0 [{'bid_p': 0.0, 'bid_v': 0, 'ask_p': 0.0, 'ask...
1 [{'bid_p': 0.0, 'bid_v': 0, 'ask_p': 0.0, 'ask...
2 [{'bid_p': 0.0, 'bid_v': 0, 'ask_p': 0.0, 'ask...
...
32998 [{'bid_p': 6.09, 'bid_v': 30800, 'ask_p': 6.1,...
32999 [{'bid_p': 6.09, 'bid_v': 30700, 'ask_p': 6.1,...
Name: quotes, Length: 33000, dtype: object
例如,字段"quotes"的值为:
一个二个一个一个
我在Python中提取这些项并展开为多个字段:
def quote(df_quotes):
keys=('bid_p1','bid_p2','bid_p3','bid_p4','bid_p5','bid_v1', 'bid_v2', 'bid_v3','bid_v4', 'bid_v5','ask_p1','ask_p2','ask_p3','ask_p4', 'ask_p5','ask_v1','ask_v2','ask_v3', 'ask_v4','ask_v5')
cd1 = eval(df_quotes)
cd2=pd.DataFrame(cd1,index=range(0,len(cd1)))
cd3=[c for c in np.nditer(np.array(cd2))]
cd4=pd.DataFrame(data=cd3,index=keys).T
return cd4
cd = df.quotes.apply(lambda x: quote(x))
quotes = pd.concat(list(cd), ignore_index=True)
这是我希望得到的表:
但是这样处理一个字段要花很长时间,在DolphinDB中有没有高效的实现方法,还有,在Python中我使用了eval()
函数来转换字符串,DolphinDB有没有类似的函数呢?
1条答案
按热度按时间zmeyuzjn1#
您可以使用等效的DolphinDB函数
parseExpr
,它可以用字符串构造对象。具体来说,您可以按如下方式展开字段“quotes”:
输出结果为: