我有几个静态键列EmployeeId,type和几个列来自第一个FOR循环。
在第二个FOR循环中,如果我有特定的键,则仅应将值附加到现有的数据框列上,否则从第一个for循环中获取的列应保持不变。
第一For循环输出:
"EmployeeId","type","KeyColumn","Start","End","Country","Target","CountryId","TargetId"
"Emp1","Metal","1212121212","2000-06-17","9999-12-31","","","",""
在第二次循环之后,我有以下输出:
"EmployeeId","type","KeyColumn","Start","End","Country","Target","CountryId","TargetId"
"Emp1","Metal","1212121212","2000-06-17","9999-12-31","","AMAZON","1",""
"Emp1","Metal","1212121212","2000-06-17","9999-12-31","","FLIPKART","2",""
根据代码,如果我有Employee标签可用,我有2条以上的记录,但是我可能有一些没有Employee标签的json文件,那么输出应与First Loop Output相同。
但是我根据我的代码获得了0条记录。如果我的编码方式有误,请帮助我。
真的很抱歉-如果我不熟悉python,提出问题的方式不清楚。请在下面的超级链接中找到代码
请找到下面的代码
for i in range(len(json_file['enty'])):
temp = {}
temp['EmployeeId'] = json_file['enty'][i]['id']
temp['type'] = json_file['enty'][i]['type']
for key in json_file['enty'][i]['data']['attributes'].keys():
try:
temp[key] = json_file['enty'][i]['data']['attributes'][key]['values'][0]['value']
except:
temp[key] = None
for key in json_file['enty'][i]['data']['attributes'].keys():
if(key == 'Employee'):
for j in range(len(json_file['enty'][i]['data']['attributes']['Employee']['group'])):
for key in json_file['enty'][i]['data']['attributes']['Employee']['group'][j].keys():
try:
temp[key] = json_file['enty'][i]['data']['attributes']['Employee']['group'][j][key]['values'][0]['value']
except:
temp[key] = None
temp_df = pd.DataFrame([temp])
df = pd.concat([df, temp_df], sort=True)
# Rearranging columns
df = df[['EmployeeId', 'type'] + [col for col in df.columns if col not in ['EmployeeId', 'type']]]
# Writing the dataset
df[columns_list].to_csv("Test22.csv", index=False, quotechar='"', quoting=1)
如果员工标签不可用,我将获得0条记录作为输出,但是我希望根据第一个FOR循环的输出获得1条记录。如果“雇员标签”可用,那么我希望有2条记录以及我的静态列“ EmployeeId”,“类型”,“ KeyColumn”,“开始”,“结束”,否则,如果标签不可用,则所有静态列“ EmployeeId”,“类型”,“键列”,“开始”,“结束”,其余列为空白
一个很长的解决方案,可以修改代码,从而增加一个循环,更改索引以及修改range
参数:
df = pd.DataFrame()
num = max([len(v) for k,v in json_file['data'][0]['data1'].items()])
for i in range(num):
temp = {}
temp['Empid'] = json_file['data'][0]['Empid']
temp['Empname'] = json_file['data'][0]['Empname']
for key in json_file['data'][0]['data1'].keys():
if key not in temp:
temp[key] = []
try:
for j in range(len(json_file['data'][0]['data1'][key])):
temp[key].append(json_file['data'][0]['data1'][key][j]['relative']['id'])
except:
temp[key] = None
temp_df = pd.DataFrame([temp])
df = pd.concat([df, temp_df],ignore_index=True)
for i in json_file['data'][0]['data1'].keys():
df[i] = pd.Series([x for y in df[i].tolist() for x in y]).drop_duplicates()
现在:
print(df)
是:
Empid Empname XXXX YYYYY
0 1234 ABC Naveen Kumar
1 1234 ABC NaN Rajesh
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句