怎么用每组中出现频率最高的值填充DataFrame中缺失的值?

原学程将引见若何用每一组中涌现频次最低的值填充DataFrame中缺掉的值?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么用每组中出现频率最高的值填充DataFrame中缺失的值? 教程 第1张

成绩描写

我有1个包括二列的 pandas DataFrame:toy以及colorcolor列包括缺乏的值。

怎样用该特定toy最频仍的color值填充缺掉的color值?

以下是创立示例数据散的代码:

import pandas as pd
import numpy as np
df = pd.DataFrame({
 'toy':['car'] * 四 + ['train'] * 五 + ['ball'] * 三 + ['truck'],
 'color':['red', 'blue', 'blue', np.nan, 'green', np.nan,
 'red', 'red', np.nan, 'blue', 'red', np.nan, 'green']
 })

以下是示例数据散:

toy  color
0  car red
一  carblue
二  carblue
三  car NaN
四train  green
五train NaN
六train red
七train red
8train NaN
九 ballblue
一0ball red
一一ball NaN
一二  truck  green

以下是所需成果:

    将第1个NaN调换为蓝色,由于这是汽车中最多见的color

    第两个以及第3个NaN调换为白色,由于这是列车中最多见的color

    将第4个NaN调换为蓝色或者白色,由于它们是并列的color

真虚数据散备注:

    有很多分歧的toy典型(没有只是4种)。

    出有只要color缺乏值的toy典型,是以谜底没有须要处置这类情形。

This question是相干的,但是它出有答复我怎样应用最频仍的值去填充缺乏的值的成绩。

推举谜底

不妨应用groupby()+transform()+fillna()

df['color']=df['color'].fillna(df.groupby('toy')['color'].transform(lambda x:x.mode().iat[0]))

或者

假如要在有二个或者更多频仍值时选择随机值:

from random import choice

df['color']=df['color'].fillna(df.groupby('toy')['color'].transform(lambda x:choice(x.mode())))

佳了闭于怎样用每一组中涌现频次最低的值填充DataFrame中缺掉的值?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。