可以使用 pandas 库中的 groupby 函数和 apply 函数来解决此问题。具体步骤如下:
grouped = df.groupby('A')
def my_func(group): group.loc[group['B'] > 0, 'C'] = 1 group.loc[group['B'] <= 0, 'D'] = 2 return group
new_df = grouped.apply(my_func)
完整的例子如下:
import pandas as pd
df = pd.DataFrame({'A': ['a', 'a', 'b', 'b'], 'B': [1, -1, 2, 0], 'C': [0, 0, 0, 0], 'D': [0, 0, 0, 0]})
grouped = df.groupby('A')
def my_func(group): group.loc[group['B'] > 0, 'C'] = 1 group.loc[group['B'] <= 0, 'D'] = 2 return group
new_df = grouped.apply(my_func)
print(new_df)
输出结果如下:
A B C D 0 a 1 1 0 1 a -1 0 2 2 b