在数据帧中,具有groupby条件的新列不起作用的原因可能是由于操作的顺序问题。当我们在数据帧上执行groupby操作后,新列的计算是基于分组后的数据进行的。因此,如果我们先创建新列,然后再执行groupby操作,新列的值将不会按照预期进行分组。
为了解决这个问题,我们可以通过两种方式来处理:
下面是一个示例代码,演示了如何在数据帧中使用groupby条件的新列:
import pandas as pd
# 创建一个示例数据帧
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'two', 'one'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
# 先创建新列,再执行groupby操作
df['D'] = df['C'] * 2
result1 = df.groupby(['A', 'B'])['D'].sum()
# 使用transform函数
df['E'] = df.groupby(['A', 'B'])['C'].transform(lambda x: x.sum() * 2)
result2 = df.groupby(['A', 'B'])['E'].sum()
print(result1)
print(result2)
在上述示例中,我们首先创建了新列'D',然后执行了groupby操作,并计算了'D'列的总和。接下来,我们使用transform函数创建了新列'E',并将'E'列的计算应用到每个分组中的每个元素上,最后再执行groupby操作,并计算了'E'列的总和。通过比较result1和result2,我们可以看到两种方式得到的结果是一致的。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云