我有一个非常大的字典数组,如下所示:
masterArray =[{'value': '-1', 'product': 'product1', 'Customer': 'customer1',
'Sensor': 'sensor1', 'Date': '20170302', 'type': 'type1', 'ID': '100'},
{'value': '20', 'product': 'product1', 'Customer': 'customer1',
'Sensor': 'sensor1','Date': '20170302', 'type': 'type2', 'ID': '100'},
{'value': '0', 'product': 'product1', 'Customer': 'customer1',
'Sensor': 'sensor1', 'Date': '20170302', 'type': 'type1', 'ID': '101'},
{'value': '-5', 'product': 'product1', 'Customer': 'customer1',
'Sensor': 'sensor1', 'Date': '20170302', 'type': 'type2', 'ID': '101'}]
我需要能够为每一天,产品,传感器和客户打印出单独的csv,第一列为ID#,类型为其余列,其值为数据填写行。
ID, type1, type2
100, -1, 20
101, 0, -5
我还创建了日期集和“组合”集,以收集产品,传感器和客户的唯一日期和组合。
不幸的是我不允许安装pandas库,虽然我认为我想做的事情将由此完成:
df = pd.DataFrame(masterArray)
df.head()
pivot = pd.pivot_table(df, index=['ID'], values=['value'], columns=['type'])
for date in dateset:
#filter for date
pqd = pivot.query('Date == date')
for row in comboset:
#filter for each output
pqc = pqd.query('Customer == row[0] & product == row[1] & sensor == row[2]')
outputName = str(row[0] + '_' + date + '_' + row[1] + '_' + row[2] + '.csv')
filepath = os.path.join(path, outputName)
pqc.to_csv(filepath) #print
目前,我的大熊猫的想法是将我的masterArray更改为一个巨大的嵌套字典(我自己从其他输入csv文件创建masterArray),但我不确定这是否是最有效的方式。我也不知道如何最好地为那么大的嵌套字典设置逻辑。请帮忙!
答案 0 :(得分:0)
您可以尝试这样的事情:
data_dict = {}
for each in masterArray:
if not data_dict.has_key(each['ID']):
data_dict[each['ID']] = []
data_dict[each['ID']].append({each['type']: each['value']})