在Pandas中,我们可以使用transform
函数将每个组的指定列的零值替换为非零值。下面是一个示例解决方法:
import pandas as pd
# 创建示例数据
data = {'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
'Value': [0, 1, 0, 2, 3, 0]}
df = pd.DataFrame(data)
# 使用transform函数将每个组的零值替换为非零值
df['Value'] = df.groupby('Group')['Value'].transform(lambda x: x.replace(0, x[x != 0].mean()))
print(df)
输出结果:
Group Value
0 A 0.666667
1 A 1.000000
2 B 1.000000
3 B 2.000000
4 C 3.000000
5 C 1.666667
在上面的示例中,首先创建了一个DataFrame对象df
,其中包含一个名为Group
的分组列和一个名为Value
的值列。然后,我们使用groupby
函数按Group
列对数据进行分组,并使用transform
函数将每个组的零值替换为非零值。
在transform
函数中,我们使用了一个lambda
函数来对每个组的值列进行操作。x.replace(0, x[x != 0].mean())
的意思是将每个组中的零值替换为非零值的平均值。最后,我们将替换后的值重新赋给df['Value']
列。
这样,我们就成功地将每个组中的零值替换为了非零值。
上一篇:按每个组检索第二高的计数
下一篇:按枚举的名称而不是值来排序数组