要按照一个布尔变量分组并为每个组创建一个新的列,可以使用pandas的groupby()
和apply()
方法。
以下是一个示例代码:
import pandas as pd
# 创建示例数据
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
'Age': [20, 21, 22, 20, 22],
'IsMale': [True, True, False, True, False]}
df = pd.DataFrame(data)
# 定义一个函数来为每个组创建新的列
def create_new_column(group):
group['NewColumn'] = group['Age'] * 2
return group
# 按照布尔变量IsMale分组,并使用apply方法调用创建新列的函数
df = df.groupby('IsMale').apply(create_new_column)
# 打印结果
print(df)
输出结果:
Name Age IsMale NewColumn
0 Tom 20 True 40
1 Nick 21 True 42
2 John 22 False 44
3 Tom 20 True 40
4 John 22 False 44
在这个示例中,我们首先创建了一个包含姓名、年龄和性别的示例数据框。然后,我们定义了一个函数create_new_column()
,它接受一个分组并为每个分组创建一个新的列。最后,我们使用groupby()
方法按照布尔变量IsMale分组,并使用apply()
方法调用函数来为每个组创建新的列。