首頁  >  文章  >  後端開發  >  當行數無法被部分數整除時,如何將大型 Pandas DataFrame 分成相等的部分?

當行數無法被部分數整除時,如何將大型 Pandas DataFrame 分成相等的部分?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 03:29:30846瀏覽

How do I split a large Pandas DataFrame into equal parts when the number of rows is not divisible by the number of parts?

將大型Pandas 資料幀分割成相等的部分

在Pandas 中處理大型資料集時,通常需要將它們分成更小的區塊處理或分析。分割資料幀的常用方法是 np.split,它將資料沿著指定軸分佈到相等數量的數組中。但是,嘗試使用此方法拆分奇數行可能會導致 ValueError。

使用 np.array_split 的替代方法

要解決此問題,請考慮使用改為 np.array_split。此函數允許對資料幀進行不等劃分,如以下Python 程式碼所示:

<code class="python">import pandas as pd
import numpy as np

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                    'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                    'C' : np.random.randn(8), 'D' : np.random.randn(8)})

print(df)

split_data = np.array_split(df, 4)

for part in split_data:
    print(part)</code>

此程式碼的輸出顯示資料幀被分成四個相等的部分:

     A      B         C         D
0  foo    one -0.174067 -0.608579
1  bar    one -0.860386 -1.210518
2  foo    two  0.614102  1.689837
3  bar  three -0.284792 -1.071160
4  foo    two  0.843610  0.803712
5  bar    two -1.514722  0.870861
6  foo    one  0.131529 -0.968151
7  foo  three -1.002946 -0.257468

     A      B         C         D
0  foo    one -0.174067 -0.608579
1  bar    one -0.860386 -1.210518
2  foo    two  0.614102  1.689837
3  bar  three -0.284792 -1.071160
4  foo    two  0.843610  0.803712
5  bar    two -1.514722  0.870861

     A      B         C         D
0  foo    one  0.131529 -0.968151
1  foo  three -1.002946 -0.257468

     A      B         C         D
0  bar    one -0.860386 -1.210518
1  foo    two  0.614102  1.689837
2  bar  three -0.284792 -1.071160
3  foo    two  0.843610  0.803712
4  bar    two -1.514722  0.870861

使用np.array_split 可確保資料幀行的均勻分佈,無論其總計數為何。這提供了一種將大型資料集分割成可管理的區塊以進行進一步處理的便捷方法。

以上是當行數無法被部分數整除時,如何將大型 Pandas DataFrame 分成相等的部分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn