首頁 > 後端開發 > Python教學 > 如何根據列值將 Pandas DataFrame 拆分為子集?

如何根據列值將 Pandas DataFrame 拆分為子集?

Barbara Streisand
發布: 2024-10-19 22:33:02
原創
753 人瀏覽過

How to Split Pandas DataFrame into Subsets Based on Column Value?

根據列值拆分Pandas DataFrame

在Pandas 中,一個常見的場景是需要根據列值將DataFrame 拆分為多個子集特定列中存在的值。這允許有針對性的數據分析和操作。

為了實現這一點,我們可以利用 Pandas 中布林索引的強大功能。讓我們考慮一個包含名為「Sales」的欄位的 DataFrame,並探討如何根據「Sales」值是低於還是高於閾值 s' 將其分成兩部分。

解決方案:

<code class="python"># Create a DataFrame with a "Sales" column
df = pd.DataFrame({'Sales':[10,20,30,40,50], 'A':[3,4,7,6,1]})
print (df)</code>
登入後複製
   A  Sales
0  3     10
1  4     20
2  7     30
3  6     40
4  1     50
登入後複製
<code class="python"># Split the DataFrame based on "Sales" values
s = 30

df1 = df[df['Sales'] >= s]
print (df1)</code>
登入後複製
   A  Sales
2  7     30
3  6     40
4  1     50
登入後複製
登入後複製

這將建立一個新的DataFrame df1,其中包含「Sales」值大於或等於's' 的行。

<code class="python">df2 = df[df['Sales'] < s]
print (df2)
登入後複製
   A  Sales
0  3     10
1  4     20
登入後複製
登入後複製

df2 包含「Sales」值小於 's' 的行。

使用位元求反的替代方法:

除了使用大於或等於運算符,我們也可以使用位元求反(~)來反轉掩碼碼:

<code class="python">mask = df['Sales'] >= s
df1 = df[mask]
df2 = df[~mask]
print (df1)</code>
登入後複製
   A  Sales
2  7     30
3  6     40
4  1     50
登入後複製
登入後複製
<code class="python">print (df2)</code>
登入後複製
   A  Sales
0  3     10
1  4     20
登入後複製
登入後複製

這種方法實現了相同的分割,但允許更簡潔和優化的編碼風格。

以上是如何根據列值將 Pandas DataFrame 拆分為子集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板