私のデータフレーム
Items Count ScannedCount
0 {'comp': {'S': '2019-08-02'}... 1032 1032
1 {'comp': {'S': '2019-08-27'}... 1032 1032
アイテムシリーズはこんな感じ
{'comp': {'S': '2019-08-02T16:54:55.035196+03:00'}, 'ID': {'S': '336'}, 'dID': {'S': '1763523'}, 'fname': {'S': '558012'}}
この投稿の2番目の回答を使用すると、シリーズをデータフレームに変換できます。問題は、各行で発生するため、その操作をどのようにスケーリングするかです。
現在のアプローチ:
各行をループして、それらを一連に連結します(非常に遅い)
item_df = pd.DataFrame(df['Items'].iloc[i]) for i in range(df.shape[0])]).reset_index(drop=True), df], axis=1)
結果を元のデータフレームと連結します
df = pd.concat([temp, df], axis=1)
for
最初の部分のループがボトルネックだと思います。シリーズをデータフレームに変換し、元のデータフレームに連結して戻すより速い方法はありますか?
期待される出力:
comp ID dID fname Count ScannedCount
0 2019-08-02T16:54:55 336 1763523 548012 1032 1032
1 2019-09-01T14:52:24 336 1763523 528012 1032 1032
このより円柱状のソリューションを試してください。辞書には常に「S」キーがあるという仮定で機能します。
df_tmp = df['Items'].apply(pd.Series)
for c in df_tmp.columns:
df[c] = df_tmp[c].apply(lambda x: x.get('S'))
df = df.drop(columns='Items')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加