pandas 在判断一个series里面是否包含某元素时候要加tolist

可以直接跳到末尾

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html
converters : dict, default None
Dict of functions for converting values in certain columns. Keys can either be integers or column labels, values are functions that take one input argument, the Excel cell content, and return the transformed content

converters 会使转化的那一列的 dtype 变成 object

例子如下:

  • 不加 converters 参数
df = pd.read_excel(r'D:\Projects\data.xlsx')
df['CLIENT_ID']

输出结果是
在这里插入图片描述

  • 我将其中的一列’CLIENT_ID’转化为 str
df = pd.read_excel(r'D:\Projects\data.xlsx', converters={'CLIENT_ID':str})
df['CLIENT_ID']

输出结果是
在这里插入图片描述

可以发现 dtype 并不是预想中的 str,而是object
所以当我在做如下判断时

In[9]: '3962302' in df['CLIENT_ID']
Out[9]: False

出现诡异的一幕,解决办法只能是多写一步操作

In[9]: '3962302' in df['CLIENT_ID']
Out[9]: False
In[10]: '3962302' in df['CLIENT_ID'].tolist()
Out[10]: True
In[11]: '3962302' in df['CLIENT_ID'].values
Out[11]: True

最后发现搞错了,并不是因为dtype变成了object,而是因为

'3962302' in df['CLIENT_ID']
#等同于
'3962302' in df['CLIENT_ID'].index
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值