# 有标签的json读取
# "frame_id": 0,
# "instances": [
# {
# "keypoints": [
# [
# -0.0,
# 0.0,
# 0.5933557152748108
# ],...
df = pd.read_json(path_or_buf="./2.json", orient="r", encoding="utf-8")
# 打印 DataFrame
print(df)
print(type(df))
# 新建空列表,用于存储提取的数据
extracted_data = []
# 循环遍历 DataFrame 的行
#iterrows() 方法用于遍历 DataFrame 的行,row['instances'] 提取了 Series 中名为 'instances' 的列的值
labels = ['hip','rhip','rknee','rfoot','lhip','lknee','lfoot','spine','thorax','neck','head','lshoulder','lelbow','lwrist','rshoulder','relbow','rwrist']
#复制130次
labels_multiplied = labels * 130
print(labels_multiplied)
# print(size(labels_multiplied))
print(zip(labels_multiplied))
for index, row in df.iterrows():
# 提取 'instances' 列中的 'keypoints' 列的所有元素
keypoints_list= row['instances'][0]['keypoints']
# (keypoints_list)
# 将提取的数据添加到 DataFrame 中
#一共是130*17=2210个元素,对于这个示例的数据来说
#zip(keypoints_list)作用是把(130*17)所有的点压缩成一列,并且按照每个帧数先后顺序来排列
for j,(label, keypoint) in enumerate(zip(labels_multiplied,keypoints_list)):
extracted_data.append({
'frame_id': row['frame_id'],
'keypoint_label': label,
'keypoint_index': j,
'keypoint_coord': keypoint
})
result_df = pd.DataFrame(extracted_data)
result_df_sorted = result_df.sort_values(by='keypoint_index')
# 'keypoint_label': label,
# df['hip'] = extracted_data
print(result_df)
print(result_df[result_df['keypoint_label'] == 'rhip'])
print(labels_multiplied)
程序的目的是提取关键点,并且给关键点按身体部位打上标签