首页 > 其他分享 >检查包含缺失值的编号列 有多少需要转换为整数字符串的

检查包含缺失值的编号列 有多少需要转换为整数字符串的

时间:2023-05-16 13:02:49浏览次数:33  
标签:False int 编号 字符串 return 缺失 seri

'''
检查包含缺失值的编号列 有多少需要转换为整数字符串的
为避免计数函数忽略缺失值, 需要先将列转换为字符串格式, 或者采用value_counts(dropna=False)
两种方法比较 https://cloud.tencent.com/developer/article/2134113
结论 编号列含缺失值和浮点数 不能整列直接转换为整数
'''
from deepdiff import DeepDiff

seri_1 = df_1.物料号.astype(str).value_counts().sort_index() # 索引为字符串格式 缺失值已转化为'nan'
seri_2 = df_1.物料号.value_counts(dropna=False).sort_index() # 索引为浮点数格式 缺失值为NaN
seri_1.index == seri_2.index.astype(str)

DeepDiff( 
    seri_1.to_frame().astype(str).to_dict('records'),
    seri_2.to_frame().astype(str).to_dict('records'),
    ignore_order= True
) # {}表示无区别
'''
https://www.cnblogs.com/jebeljebel/p/4006433.html # isdigit、isdecimal、isnumeric的区别
https://stackoverflow.com/questions/68239333/pandas-str-isnumeric-for-floats
https://pythonhow.com/how/check-if-a-string-is-a-float/
'''
# import pandas as pd
# import numpy as np

'''
# 判断是否是 数字 或缺失值 或数字字符串 或缺失值字符串
# 缺失值字符串包括 nan任意大小写字符串
'''
def is_float(x):
    try:
        float(x)
    except ValueError: # 非数字且非缺失值字符串
        return False
    except TypeError: # None
        return False
    else:
        return True

seri = pd.Series([0, 1.0, np.nan, '3E0', 'NAn', 'a5', None])
seri.apply(is_float)

'''
但这不是我想要的 我想要的是只能筛选出整数和浮点数的函数
int只能转化整数 浮点数 整数字符串 其他都不行
'''
def canbe_int(x):
    try:
        int(x)
        return True
    except ValueError:
        return False
    except TypeError: # None
        return False

seri = pd.Series([0, 1.0, np.nan, '3E0', 'NAn', 'a5', None])
seri.apply(canbe_int)
'''分类转化 np.where和query在此不管用'''
seri = pd.Series([0, 1.0, np.nan, '3E0', 'NAn', 'a5', None])
seri.loc[seri.apply(canbe_int)] = seri.loc[seri.apply(canbe_int)].astype(int).astype(str)
seri.loc[seri.apply(canbe_int)==False] = ''
seri

标签:False,int,编号,字符串,return,缺失,seri
From: https://blog.51cto.com/u_16055028/6283503

相关文章

  • Java中两个字符串进行大小比较
    一:大小比较:使用String.compareTo方法如果需要忽略大小写,使用compareToIgnoreCasecompareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序)1、如果字符串相等返回值02、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值表示前字符......
  • 2023-05-15:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次, 能够使结果字
    2023-05-15:对于某些非负整数k,如果交换s1中两个字母的位置恰好k次,能够使结果字符串等于s2,则认为字符串s1和s2的相似度为k。给你两个字母异位词s1和s2,返回s1和s2的相似度k的最小值。输入:s1="abc",s2="bca"。输出:2。答案2023-05-15:解题思路:定......
  • C基础笔记(字符串)
    字符串strlen计算字符串长度:strlen(s1);返回字符串s1的长度。strcat字符串相连: strcat(s1,s2);  连接字符串s2到字符串s1的末尾。strcmp字符串比较    strcmp(s1,s2);如果s1和s2是相同的,则返回1;如果s1<s2则返回小于0;如......
  • Lua 字符串
    Lua字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。[[与]]间的一串字符。以上三种方式的字符串实例如下:实例str1="Lua"print("双引号字符串:",str1)str2......
  • 给定一个字符串,用java代码找出其中不含有重复字符的最长子串的长度
    publicintlengthOfLongestSubstring(Strings){intn=s.length(),ans=0;Map<Character,Integer>map=newHashMap<>();for(inti=0,j=0;j<n;j++){if(map.containsKey(s.charAt(j))){i=Math.ma......
  • 字符串
    String直接赋值会复用字符串常量池中的new出来的不会复用,会开辟一个新的空间用for循环遍历数组,通过charc=str.charAt(i)来索引值.再定义一个数组,对应......
  • 剑指 Offer 20. 表示数值的字符串
    题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。   classSolution{publicbooleanisNumber(Strings){if(s==null||s.length()==0)returnfalse;//s为空对象或s长度为0(空字符串)时,不能表示数值charstr[]=s.trim()......
  • 直播软件开发,JS生成随机字符串的方法
    直播软件开发,JS生成随机字符串的方法functionrandomString(randomLen,min,max){  varstr="",    range=min,    arr=['0','1','2','3','4','5','6','7','8�......
  • VB.NET 截取字符串
    在VB.NET中,您可以使用Substring方法或Split方法来截取字符串。Substring方法允许您从字符串中提取一个子字符串,该子字符串从指定的起始索引开始,并继续到字符串的末尾或指定的长度。以下是使用Substring方法截取字符串的示例:DimstrAsString="HelloWorld!"DimsubStr1As......
  • 【LeetCode字符串#extra】KMP巩固练习:旋转字符串、字符串轮转
    旋转字符串https://leetcode.cn/problems/rotate-string/给定两个字符串,s和goal。如果在若干次旋转操作之后,s能变成goal,那么返回true。s的旋转操作就是将s最左边的字符移动到最右边。例如,若s='abcde',在旋转一次之后结果就是'bcdea'。示例1:输入:s="......