Python 如何在每个组的数据帧中输入列

Python 如何在每个组的数据帧中输入列,python,pandas,missing-data,imputation,Python,Pandas,Missing Data,Imputation,全部, 我的dataframe有四列(“key1”、“key2”、“data1”、“data2”)。我在data1中插入了一些nan。现在,我想用每个组中最常出现的值填充nan,这些值是我执行groupby(['key1','key2'])之后的值 我想做的是,在这个例子中,用0.0(组内最频繁的值(key1=a,key2=d)填充data1列中的nan 非常感谢您的帮助!使用.transform(lambda y:y.fillna(y.value\u counts().idxmax()) 以前

全部,

我的dataframe有四列(“key1”、“key2”、“data1”、“data2”)。我在data1中插入了一些nan。现在,我想用每个组中最常出现的值填充nan,这些值是我执行
groupby(['key1','key2'])
之后的值

我想做的是,在这个例子中,用0.0(组内最频繁的值(key1=a,key2=d)填充data1列中的nan

非常感谢您的帮助!

使用
.transform(lambda y:y.fillna(y.value\u counts().idxmax())

以前

key1  key2  data1
a     c     1.0       6
            3.0       5
            0.0       4
            2.0       3
            4.0       3
            NaN       1
      d     1.0      11
            3.0       9
            0.0       5
            2.0       5
            4.0       5
b     c     4.0       7
            0.0       4
            3.0       4
            2.0       3
            NaN       2
            1.0       1
      d     4.0       6
            1.0       5
            2.0       5
            3.0       4
            0.0       2
Name: data1, dtype: int64
应用
.transform(lambda y:y.fillna(y.value\u counts().idxmax())后)


谢谢!这正是我想要的!我还想知道其他的解决方案。
key1  key2  data1
a     c     1.0       6
            3.0       5
            0.0       4
            2.0       3
            4.0       3
            NaN       1
      d     1.0      11
            3.0       9
            0.0       5
            2.0       5
            4.0       5
b     c     4.0       7
            0.0       4
            3.0       4
            2.0       3
            NaN       2
            1.0       1
      d     4.0       6
            1.0       5
            2.0       5
            3.0       4
            0.0       2
Name: data1, dtype: int64
dt['nan_filled'] = dt.groupby(['key1', 'key2'])['data1'].transform(lambda y: y.fillna(y.value_counts().idxmax()))
group = dt.groupby(['key1', 'key2'])['nan_filled']
group.value_counts(dropna=False)


key1  key2  nan_filled
a     c     1.0            7
            3.0            5
            0.0            4
            2.0            3
            4.0            3
      d     1.0           11
            3.0            9
            0.0            5
            2.0            5
            4.0            5
b     c     4.0            9
            0.0            4
            3.0            4
            2.0            3
            1.0            1
      d     4.0            6
            1.0            5
            2.0            5
            3.0            4
            0.0            2
Name: nan_filled, dtype: int64