作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过遍历 Series 来转换 Pandas.Series 中的数据
DataFrame df 看起来像
c1 c2
0 - 75.0%
1 -5.5% 65.8%
.
n - 6.9%
仅应删除“%”和“-”值。期望的结果:
c1 c2
0 0.0 75.0
1 -5.5 65.8
.
n 0.0 6.9
如果我打电话
df['c1']= df['c1'].str.replace('%', '')
df['c1']= df['c1'].str.replace('-%', '0')
df['c1']= df['c1'].astype(float)
有效。
但是如果我尝试迭代它不会:
col= []
col.append(df['c1'])
col.append(df['c2'])
for i in (col):
i = i.str.replace('%', '',regex=True)
i = i.str.replace('-$', '0',regex=True)
提前致谢
最佳答案
编辑:改进的正则表达式
# Thanks to @tdy
df.replace({'\%':'', r'^\s*-\s*$':0}, regex=True)
解释 - 因为基于字符串的数据通常可以有随机空间。您也可以将其替换为 0,因为随后的 float 转换将处理小数。
输出
c1 c2
0 0.0 75.0
1 -5.5 65.8
2 0.0 6.9
解释
我们可以在完整的 df 上使用正则表达式来替换所需的符号,我们将 %
替换为空字符串,如果一行末尾包含 -
,则替换它与 0.0。
关于python - 通过遍历列将数据框对象转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67361824/
我是一名优秀的程序员,十分优秀!