Python 如何在每个组的数据帧中输入列
全部, 我的dataframe有四列(“key1”、“key2”、“data1”、“data2”)。我在data1中插入了一些nan。现在,我想用每个组中最常出现的值填充nan,这些值是我执行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()) 以前
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