我有 1 个数据集
NotesData = [{"Labels" : "Q1-17" , "EPCCO" : "This is Eppco Note" , "QACCO" : "This is QACCO Notes"}]
我有另一个数据集
ChartData = [ {'ForDate': '2020-12-31T00:00:00', 'ForYear': 2020, 'Labels': 'Q1-17', 'EPCCO': 29.459162790697675, 'QACCO': 20.10097777777778}]
我想看看两个数据集中是否存在任何对象的标签,而不是我想添加第一个数据集中第二个数据集中除标签之外的所有键
例如我的数据看起来像这样
[ {'ForDate': '2020-12-31T00:00:00', 'ForYear': 2020, 'Labels': 'Q1-17', 'EPCCO': 29.459162790697675, 'QACCO': 20.10097777777778 , 'EPCCO_Note' : 'This is Eppco Note' , 'QACCO_Note' : 'This is QACCO Notes'}]
我可以在第一个数据集上循环,因为不会有太多对象,但我无法在第二个数据集上循环,因为数据太大,可能有数千个对象。并且键 EPPCO 和 QACCO 是动态的,因此它可以是任何键。
我已经尝试过这个解决方案,它工作正常,是否缺少任何可能导致任何问题的东西?
for note in NotesData:
matching_rows = [row for row in new_dataset if row['Labels'] == note['Labels']]
if matching_rows:
chart_row = matching_rows[0] # Get the first matching row (assuming there's only one)
keys_to_add = [key for key in note.keys() if key != 'Labels']
for key in keys_to_add:
chart_row[key+'_Note'] = note[key]
使用
pandas
是开箱即用的解决方案。
import pandas as pd
Notes = pd.DataFrame(NotesData)
Chart = pd.DataFrame(ChartData)
Merged = Notes.merge(Chart, on=['Labels'])
顺便说一句,pandas 是您必须安装的外部软件包。
pip install pandas
从头开始实现需要迭代两个数据集。数千个元素应该不是问题,只要它适合您的 RAM。