生成包含模态值的新列
Generating new column containing modal value
我有以下数据框:
skus = [1, 1, 1, 2, 2]
prices = [10.99, 10.99, 11.50, 9.99, 9.99]
data = dict(skus=skus, prices=prices)
df = pd.DataFrame(data, columns=data.keys())
如何创建另一列 prices_mode
,如下所示:
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99
即这是每个唯一 sku
值的价格模式。
方法一
使用 groupby
、transform
和 pd.Series.mode
:
df['prices_modal'] = df.groupby('skus')['prices'].transform(lambda x: pd.Series.mode(x)[0])
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99
方法二
使用statistics.mode
from statistics import mode
df['prices_modal'] = df.groupby('skus')['prices'].transform(mode)
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99
我有以下数据框:
skus = [1, 1, 1, 2, 2]
prices = [10.99, 10.99, 11.50, 9.99, 9.99]
data = dict(skus=skus, prices=prices)
df = pd.DataFrame(data, columns=data.keys())
如何创建另一列 prices_mode
,如下所示:
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99
即这是每个唯一 sku
值的价格模式。
方法一
使用 groupby
、transform
和 pd.Series.mode
:
df['prices_modal'] = df.groupby('skus')['prices'].transform(lambda x: pd.Series.mode(x)[0])
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99
方法二
使用statistics.mode
from statistics import mode
df['prices_modal'] = df.groupby('skus')['prices'].transform(mode)
skus prices prices_modal
0 1 10.99 10.99
1 1 10.99 10.99
2 1 11.50 10.99
3 2 9.99 9.99
4 2 9.99 9.99