我有一个数据框,id和日期作为索引,ShopData作为列,如下所示: shopdata
如您所见,有一个以“ValueType”和“Value”为键的字典列表。如果“ValueType”等于“coffee”,则可以提取“Value”键下的数据。然后我需要这些数据来做一些计算
我下面的代码工作正常,但速度很慢:
ids = data.index.get_level_values(0)
df = pd.DataFrame(float(0),index = ids , columns=['coffeedata'] )
for i in range(len(ids)):
for item in data.loc[ids[i], 'ShopData'][0] :
if item["ValueType"] == 'coffee':
df.iloc[i]['coffeedata']= float(item['Value'] )
瓶颈在哪里?你知道如何让代码运行得更快吗?谢谢
试试这个:
当ValueType为coffee时,它将创建一列,其中包含包含值的列表
运行:
我测试了4000行样本的执行时间(使用%timeit)。 您的代码在5.11s中执行,而我的代码在5.42ms中执行(快940倍)
相关问题 更多 >
编程相关推荐