python - Pandas:用组的模式填充 na

标签 python pandas mode fillna

我有一个 df多列。

df = pd.DataFrame({'Store':['M1','M2','M3','M1','M1','M2','M2','M3','M3'],
                   'Category':['A','A','A','B','B','B','C','C','C'],
                   'Price_Category':[np.nan,X,np.nan,np.nan,Y,Y,Z,np.nan,Z]})
我如何填写NaNPrice_Category与模式,仅基于Category ?
我尝试使用:
df['Price_Category'] = df.groupby('Category')['Price_Category'].apply(lambda x: x.fillna(x.mode()[0]))
但我收到此错误:KeyError: 0我试过的其他方法,开始填NaN名称来自 Store .
谢谢你的帮助!

最佳答案

使用 Series.iat 对于 Series 的第一个值按职位:

f = lambda x: x.fillna(x.mode().iat[0])
df['Price_Category'] = df.groupby('Category')['Price_Category'].apply(f)

print (df)
  Store Category Price_Category
0    M1        A              X
1    M2        A              X
2    M3        A              X
3    M1        B              Y
4    M1        B              Y
5    M2        B              Y
6    M2        C              Z
7    M3        C              Z
8    M3        C              Z
如果错误:

IndexError: index 0 is out of bounds for axis 0 with size 0


这意味着只有 NaN 一组或多组(已更改数据以引发错误):
df = pd.DataFrame({'Store':['M1','M2','M3','M1','M1','M2','M2','M3','M3'],
                   'Category':['A','A','A','B','B','B','C','C','C'],
                  'Price_Category':[np.nan,'X',np.nan,np.nan,'Y','Y',np.nan,np.nan,np.nan]})
#test if at least one non NaN else return same values (NaNs)
f = lambda x: x.fillna(x.mode().iat[0]) if x.notna().any() else x
df['Price_Category'] = df.groupby('Category')['Price_Category'].apply(f)

print (df)
  Store Category Price_Category
0    M1        A              X
1    M2        A              X
2    M3        A              X
3    M1        B              Y
4    M1        B              Y
5    M2        B              Y
6    M2        C            NaN
7    M3        C            NaN
8    M3        C            NaN

关于python - Pandas:用组的模式填充 na,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67985433/

相关文章:

python - 从 Python 中调用 Robot Framework 文件

python - 如何比较两个数据框列(不需要相同的数据)?

javascript - 使用 HKDF key 的 Crypto-js 加密和 Python 解密

python - 减少 Keras.models.model 内存消耗

hadoop - 如何检查我的hadoop是否以伪分布式模式运行?

python - 将 pandas 时间戳转换为当月月底

python - ValueWarning : No frequency information was provided, 因此将使用推断频率 MS

python - 如何在 dtype=str 的数据帧上使用 dropna?

pandas - 如何获取pandas数据框中特定列的模式值的索引

python - groupby 和选择模式并连接回原始数据帧