python性别缺失值的填充_如何根据pandas中的列填充缺失值?

本文探讨了如何在pandas DataFrame中处理缺失值(NaN),包括使用`createMultiIndex`创建多级索引,并利用`mask`函数替换`t`列的NaN。还介绍了两种处理NaN的方法,一种是根据`v`列的值进行分组,另一种是使用`groupby`和`loc`操作。涉及的技术包括设置索引、重采样、分组应用等,适用于数据清洗和预处理工作。
摘要由CSDN通过智能技术生成

如果df中的NaN在-create MultiIndex之前,然后^{},t中的NaN由列v设置:cols = ["n", "t"]

df1 = df.set_index(cols)

mux = pd.MultiIndex.from_product(df1.index.levels, names=cols)

df1 = df1.reindex(mux).sort_index(level=[1,0]).reset_index()

df1['t'] = df1['t'].mask(df1['v'].isnull())

print (df1)

n t v

0 a 0.0 10.0

1 b 0.0 20.0

2 c 0.0 30.0

3 x NaN NaN

4 a 1.0 40.0

5 b 1.0 50.0

6 c NaN NaN

7 x 1.0 60.0

另一种添加NaN的解决方案是^{},^{}方法:

^{pr2}$

但是,如果某些NaN值需要groupby与loc列的^{}值一起使用:df = pd.DataFrame({"n": ["a", "b", "c", "a", "b", "x"],

"t": [0, 0, 0, 1, 1, 1],

"v": [10,20,30,40,50,np.nan]})

print (df)

n t v

0 a 0 10.0

1 b 0 20.0

2 c 0 30.0

3 a 1 40.0

4 b 1 50.0

5 x 1 NaN

df1 = df.set_index('n')

.groupby('t', group_keys=False)

.apply(lambda x: x.loc[df.n.unique()])

.reset_index()

print (df1)

n t v

0 a 0.0 10.0

1 b 0.0 20.0

2 c 0.0 30.0

3 x NaN NaN

4 a 1.0 40.0

5 b 1.0 50.0

6 c NaN NaN

7 x 1.0 NaNdf1 = df.groupby('t', group_keys=False)

.apply(lambda x: x.set_index('n').loc[df.n.unique()])

.reset_index()

print (df1)

n t v

0 a 0.0 10.0

1 b 0.0 20.0

2 c 0.0 30.0

3 x NaN NaN

4 a 1.0 40.0

5 b 1.0 50.0

6 c NaN NaN

7 x 1.0 NaN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值