次のコードは機能しますが、一度に1行ではなく、データフレームに書き込むより効率的な方法があるかどうかを知りたいと思います。
workoutSamples
データフレームに追加している「データ」ノードにネストされたjsonを含むjson応答があります。したがって、たとえば、d['cadence']
各ノードをループして一度に1行を挿入するのではなく、データフレームの列全体に対して1つの挿入として、以下のすべてを列「ケイデンス」にプルする簡単な方法はありますか?
workouts_stats_intra = pd.DataFrame(
columns=['workoutId', 'seconds', 'cadence', 'distance', 'heart_rate', 'power', 'speed'])
for d in workoutSamples:
workoutId = d["workoutId"]
logger.info("Workout Details: " + str(workoutId))
for row in d["data"]:
workouts_stats_intra.loc[len(workouts_stats_intra)] = [workoutId, row["seconds_since_pedaling_start"],
row["cadence"], row["distance"], row["heart_rate"],
row["power"], row["speed"]]
タプルを追加してリストを作成し、DataFrame
コンストラクターに渡す方が良いと思います。
L = []
for d in workoutSamples:
workoutId = d["workoutId"]
logger.info("Workout Details: " + str(workoutId))
for row in d["data"]:
L.append((workoutId, row["seconds_since_pedaling_start"],
row["cadence"], row["distance"], row["heart_rate"],
row["power"], row["speed"]))
workouts_stats_intra = pd.DataFrame(L,
columns=['workoutId', 'seconds', 'cadence', 'distance', 'heart_rate', 'power', 'speed'])
別の可能な解決策は使用json_normalize
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加