3
DataFrame
には、パス、親パス、およびディレクトリのサイズが含まれています。 しかしの場合、ディレクトリサイズにはにサブディレクトリのサイズが含まれていません。これには、DataFrame
を複数回にわたって「掃引」して更新する必要があります。もう一つの捉え方は、私が下に向かって始め、データを再計算する必要があるということです。私はの線に沿って何かを計算しようとしているデータフレーム内の更新の移動/トリック
Parent Path Size
/ /a 10
/ /b 20
/a /a/x 1
/a /a/y 2
/a /a/z 3
/a/x /a/x/a1 99
:
現在DataFrame
がどのように見える
Parent Path Size
/ /a 115 (sum of size of /a, /a/x)
/ /b 20
/a /a/x 100 (sum of size of /a/x and /a/x/a1)
/a /a/y 2
/a /a/z 3
/a/x /a/x/a1 99
を基本的には、アップデートは下部に開始(すなわち、ノード/ディレクトリを残します)、トップレベルのディレクトリにトリックルします。私は下部からデータフレームを反復処理する方法と、すべての連続した更新が常に最新の値を取得する方法については困惑していますか?任意のアイデアは感謝、感謝。
スニペットは、データフレームを作成します。
txt = '''/ /a 10
/ /b 20
/a /a/x 1
/a /a/y 2
/a /a/z 3
/a/x /a/x/a1 99'''
rows = [ line.split() for line in txt.split('\n') ]
df = pd.DataFrame(data=rows, columns=['Parent', 'Path', 'Size'])
df['Size'] = df['Size'].astype(float)
ありがとう、私はこのコメントを受け入れますが、このアプローチは大規模なデータセット(何百万行も)では実際には機能しません。例えば、 200万レコードを処理するには、約12時間かかります!! – sasuke