如何根据列值将 Pandas DataFrame 拆分为子集?

Barbara Streisand
发布: 2024-10-19 22:33:02
原创
660 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!