numpy笔记:.select()默认值的类型

这篇博客探讨了在使用numpy.select函数为pandas DataFrame创建新字段时,根据不同的choicelist设置,如何影响新字段的默认值类型。实验表明,当choicelist为字符串、DataFrame系列或数值时,default参数的类型会分别变为字符串、数值和数值。同时,当default设置为np.nan时,判断是否等于'nan'和是否为空值(isna())的区别也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

numpy.select(condlist, choicelist, default=0)链接

当DataFame新生成字段时,choicelist如下3种会使得default的“0”的type分别为strint

一、当select函数里choicelist是指定string value时,type为str

f['new'] = numpy.select([mask], ['value'], default=0)

二、当select函数里choicelist是df.series时,type为数值

f['new'] = numpy.select([mask], [df.Series], default=0)

三、当select函数里choicelist是int / float时,type为数值

f['new'] = numpy.select([mask], [int], default=0)

import pandas as pd
import numpy as np

df= pd.DataFrame({'col1': ['b', 'str', 1, 1],
                 'col2': ['str', 12, 5, 41]})
# pinrt(df)
	col1	col2
0	b	22
1	str	12
2	1	5
3	1	41

m1 = d.col1 == 'b'
df['t1'] = np.select([m1], ['22'], default=0)
df['t2'] = np.select([m1], [df['col2']], default=0)
df['t3'] = np.select([m1], [0.1], default=0)
for i in ['t1', 't2', 't3']:
    print(any(df[f'{i}']==0))
    print(any(df[f'{i}']=='0'))
# 结果如下:
False
True

True
False

True
False

default=np.nan时候:

m1 = d.col1 == 'b'
df['t1'] = np.select([m1], ['22'], default=np.nan)
df['t2'] = np.select([m1], [df['col2']], default=np.nan)
df['t3'] = np.select([m1], [0.1], default=np.nan)
for i in ['t1', 't2', 't3']:
    print(any(df[f'{i}']=='nan'))
    print(any(df[f'{i}'].isna()))
    print(any(df[f'{i}'].isna()))

# 结果如下
True
False
False

False
True
True

False
True
True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值