在Pandas中,可以使用groupby
函数和transform
函数来根据另一列的总和动态离散化某一列。
首先,假设我们有一个DataFrame df
,其中包含两列:value
和group
。我们想要根据group
列的总和动态离散化value
列。
import pandas as pd
# 创建示例DataFrame
df = pd.DataFrame({'value': [10, 20, 30, 40, 50, 60],
'group': ['A', 'A', 'B', 'B', 'C', 'C']})
# 计算每个group的总和
group_sums = df.groupby('group')['value'].transform('sum')
# 计算每个group的离散化值
discretized_values = df['value'] / group_sums
# 将离散化值添加到DataFrame中
df['discretized_value'] = discretized_values
print(df)
输出结果如下:
value group discretized_value
0 10 A 0.166667
1 20 A 0.333333
2 30 B 0.428571
3 40 B 0.571429
4 50 C 0.500000
5 60 C 0.600000
在上述代码中,我们首先使用groupby
函数按照group
列进行分组,并使用transform
函数计算每个组的总和。然后,我们将value
列除以对应组的总和,得到离散化的值。最后,将离散化的值添加到原始DataFrame中的新列discretized_value
中。
这种方法可以根据另一列的总和动态地离散化某一列,适用于各种数据分析和处理场景。
领取专属 10元无门槛券
手把手带您无忧上云