dataframe 空值替换为0_Pandas DataFrame-将NULL字符串替换为空白,并将NULL数值替换为0...

I am working on a large dataset with many columns of different types. There are a mix of numeric values and strings with some NULL values. I need to change the NULL Value to Blank or 0 depending on the type.

1 John 2 Doe 3 Mike 4 Orange 5 Stuff

9 NULL NULL NULL 8 NULL NULL Lemon 12 NULL

I want it to look like this,

1 John 2 Doe 3 Mike 4 Orange 5 Stuff

9 0 8 0 Lemon 12

I can do this for each individual, but since I am going to be pulling several extremely large datasets with hundreds of columns, I'd like to do this some other way.

Edit:

Types from Smaller Dataset,

Field1 object

Field2 object

Field3 object

Field4 object

Field5 object

Field6 object

Field7 object

Field8 object

Field9 object

Field10 float64

Field11 float64

Field12 float64

Field13 float64

Field14 float64

Field15 object

Field16 float64

Field17 object

Field18 object

Field19 float64

Field20 float64

Field21 int64

解决方案

Use DataFrame.select_dtypes for numeric columns, filter by subset and replace values to 0, then repalce all another columns to empty string:

print (df)

0 1 2 3 4 5 6 7 8 9

0 1 John 2.0 Doe 3 Mike 4.0 Orange 5 Stuff

1 9 NaN NaN NaN 8 NaN NaN Lemon 12 NaN

print (df.dtypes)

0 int64

1 object

2 float64

3 object

4 int64

5 object

6 float64

7 object

8 int64

9 object

dtype: object

c = df.select_dtypes(np.number).columns

df[c] = df[c].fillna(0)

df = df.fillna("")

print (df)

0 1 2 3 4 5 6 7 8 9

0 1 John 2.0 Doe 3 Mike 4.0 Orange 5 Stuff

1 9 0.0 8 0.0 Lemon 12

Another solution is create dictionary for replace:

num_cols = df.select_dtypes(np.number).columns

d1 = dict.fromkeys(num_cols, 0)

d2 = dict.fromkeys(df.columns.difference(num_cols), "")

d = {**d1, **d2}

print (d)

{0: 0, 2: 0, 4: 0, 6: 0, 8: 0, 1: '', 3: '', 5: '', 7: '', 9: ''}

df = df.fillna(d)

print (df)

0 1 2 3 4 5 6 7 8 9

0 1 John 2.0 Doe 3 Mike 4.0 Orange 5 Stuff

1 9 0.0 8 0.0 Lemon 12

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值