1
在客户机/服务器应用程序中的数据帧件,数据被从服务器请求和输入答复使用请求ID映射:熊猫数据帧:减少对角线子帧单排或如何填充一块
--> Request data for item i using request_id 1 --> Request data for item j using request_id 2 : <-- Data element i.p for request_id1 <-- Data element j.p for request_id2 <-- Data element i.q for request_id1 <-- Data element j.q for request_id2 <-- Data element i.r for request_id1 <-- Data element j.r for request_id2
传入块被添加到词典中的列表由以下代码作为模拟:
import pandas
import random
md = list()
md.append({'request_id': 1, 'p': random.random()})
md.append({'request_id': 2, 'p': random.random()})
md.append({'request_id': 1, 'q': random.random()})
md.append({'request_id': 2, 'q': random.random()})
md.append({'request_id': 1, 'r': random.random()})
md.append({'request_id': 2, 'r': random.random()})
df = pandas.DataFrame(md).set_index('request_id')
print df
当创建从列表MD一个数据帧中,只有一个c-每行olumn有一个值,其他的都是NaN。上面的代码将产生以下结果:
p q r
request_id
1 0.955755 NaN NaN
2 0.920858 NaN NaN
1 NaN 0.583634 NaN
2 NaN 0.456644 NaN
1 NaN NaN 0.198991
2 NaN NaN 0.774762
[6 rows x 3 columns]
如何减少使用df每REQUEST_ID只有一行?我真正需要的是以下内容:
p q r
request_id
1 0.955755 0.583634 0.198991
2 0.920858 0.456644 0.774762
[2 rows x 3 columns]
块没有按特定顺序进入,并且对于每个请求,收到请求消息的结束。保证每个块只发送一次(如果有的话),因此每行只有一个(或零)数据元素不是NaN。
一个典型的应用是一个选项链的异步数据检索,包含各种数据元素,如Price,IV,Delta,Gamma,Theta,Vega。
你使用'defaultdict(dict)'的提示非常出色,并且完美。我没想过,之前从未使用'defaultdict'子类。感谢您抽出宝贵时间阅读我的代码片段,并指出我朝着正确的方向发展! – user3650713