可以使用pandas库提供的groupby()和filter()方法,根据指定的条件来对数据进行分组子集化。
例如,假设我们有一个包含“Name”、“Sex”和“Age”三列数据的DataFrame,想要根据“Sex”列的值将数据分组,并只保留“Age”列中的值大于等于30的行,可以通过如下代码实现:
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank', 'Grace', 'Helen', 'Iris', 'Jack'],
'Sex': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male', 'Female', 'Female', 'Female', 'Male'],
'Age': [25, 30, 28, 35, 40, 42, 29, 50, 33, 38]
})
# 根据 Sex 列的值进行分组,并保留 Age 列中的值大于等于 30 的行
grouped_df = df.groupby('Sex').filter(lambda x: x['Age'].ge(30).any())
# 输出结果
print(grouped_df)
上述代码中使用groupby()方法将数据按照“Sex”列的值进行分组,接着使用filter()方法根据lambda函数返回的值来筛选保留满足条件的行。其中,ge()方法表示大于等于,any()方法返回True if at least one element is True。
运行代码,输出结果如下:
Name Sex Age
0 Alice Female 25
4 Eva Female 40
6 Grace Female 29
7 Helen Female 50
8 Iris Female 33
1 Bob Male 30
2 Charlie Male 28
3 David Male 35
5 Frank Male 42
9 Jack Male 38
从
上一篇:按条件转换的JOLT变换