📅  最后修改于: 2023-12-03 15:06:28.522000             🧑  作者: Mango
当我们需要根据数据框中的某一列进行分组时,有时候需要保留每个分组中的最少数目的条目。这种情况在数据清洗和数据分析中很常见。本篇文章将介绍如何在Python中实现这样的需求。
首先,我们需要使用Pandas库将数据读入DataFrame中。本示例使用的数据来自kaggle上的一个练习题House Sale Prices。数据中有一个字段是'MSSubClass',表示建筑类别。现在我们将按照该字段进行分组,并保留每个分组的前两条数据。
import pandas as pd
# 将数据读入DataFrame中
df = pd.read_csv('train.csv')
# 按照'MSSubClass'字段进行分组
grouped = df.groupby('MSSubClass')
# 仅保留按'MSSubClass'字段分组的数据框中的最少两条数据,并将结果保存到新的DataFrame中
new_df = pd.DataFrame(columns=df.columns)
for name, group in grouped:
if len(group) >= 2:
new_df = pd.concat([new_df, group.nsmallest(2, 'SalePrice')])
# 输出结果
print(new_df)
在上面的代码中,我们使用了groupby()
方法将数据按照'MSSubClass'字段进行分组。然后,我们使用nsmallest()
方法仅保留每个分组中的前两条数据。为保证最终结果仍然是一个DataFrame对象,我们使用concat()
方法将每一组筛选出来的数据合并到一个新的DataFrame中,并输出结果。
本篇文章介绍了如何在Python中仅保留按一列分组的数据框中的最少条目。该方法可以适用于各类数据清洗和数据分析任务,帮助我们更快地得到想要的结果。