我有一个数据帧df1
,它有srv_val
列。如果src_val
列中的任何字符串值包含0000000000
,我必须仅用0
替换0000000000
在dataframe中打印列值
print(srv_val)
0000000089.56
0000000023.45
0000000000.00
0000000000.89
0000000000.56
0000000000.00
预期输出:0000000000
对于包含0000000000
的值,必须用0
替换
print(src_val)
0000000089.56
0000000023.45
0.00
0.89
0.56
0.00
我尝试的解决方案是:
如果发现0000000000
但给我编译错误,则尝试删除前导的9个零
df1['srv_val'] = df1['srv_val'].apply(lambda x:np.nan if pandas.isnull(x) else (x[9:] if "0000000000" in x))
或
df1['srv_val'] = df1['srv_val'].apply(lambda x:np.nan if pandas.isnull(x) else (x[9:] if x.str.contains("0000000000")))
错误:
'str' object has no attribute 'str'
任何帮助都将不胜感激。我必须用数据帧中该列中的0
替换0000000000
有很多方法可以做到这一点
但在我们开始之前,我觉得你们的值不是字符串,它们是浮动的,为什么不把它作为你们的优势呢?它可以加快你的进程
解决方案1:
如果我上面的假设是错误的,你必须用regex来做,这里还有另外3个解决方案。但我想让你们记住,字符串替换比浮动成本更高
解决方案2:(如果您只想替换十进制0[任何大小])
解决方案3:(如果您希望同时替换十进制0和整数0[任何大小])
解决方案3:(如果您有固定大小的小数来替换小数0和整数0)
假设其(9)。(2)
如果它们的编号更好,请更改数据类型
要获得预期的输出,可以使用
str.replace
和regEx0{9}
将九个零替换为空字符串''
你有
错误,因为您试图在代码中的某个地方调用
str
类型对象上的string
相关问题 更多 >
编程相关推荐