python - 如何在字符串(单元格)数组中查找字符,Python

标签 python string floating-point cell-array

我正在使用 Pandas 加载 .csv (pd.read_csv)。通常这会产生 float ,但是我的一些数据集在 .csv 文件中包含的 > 100000 个数字(例如 33x60000 的矩阵)内有一个“q”。像这样:'-13q27.20148186934421000000'(q并不总是在同一个地方)。这导致 Pandas 不会将它们视为数字,而是将其视为字符串。这使得转换为 float 变得不可能,因此我的问题是:如何轻松找到 'q' 并删除它们?

我尝试使用 for 循环并检查每个单独的字符串是否包含“q”,但这需要很长时间:

for i in range(tmp.values.shape[0]):
    for j in range(tmp.values.shape[1]):                           
       if 'q' in tmp.values[i,j]: 
          print('oh oh') 

有时它也可能是另一个字母,然后是“q”,所以也许明智的做法是寻找一般的字母,我不知道如何以有效的方式做到这一点。

预先感谢您的帮助!

最佳答案

使用pandas.DataFrame.replaceregex=True:

给定df:

   col1  col2  col3
0   1.1   2.2   3.3
1  2q.2  3.q4  q5.3
2   4.4   5.5   6.6

df = df.replace('q', '', regex=True).astype(float)
print(df.dtypes)
print(df)

输出:

col1    float64
col2    float64
col3    float64
dtype: object

   col1  col2  col3
0   1.1   2.2   3.3
1   2.2   3.4   5.3
2   4.4   5.5   6.6

关于python - 如何在字符串(单元格)数组中查找字符,Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57410620/

相关文章:

python - ValueError : not enough values to unpack (expected 3, 得到 2)

java - 按之间的数字分割字符串

opencv - 在 openCv 中写入像素值大于 1 的浮点图像

c++ - 处理融合乘加浮点不准确的通用方法

c# - 将字符串转换为 float 会引发错误 "Incorrect format"

python - 如何更改 Bash 在 Linux 中查找 Python 的位置?

python - 如何在Python中纠正像 "\u8bf8\u845b\u4eae"这样的unicode字符串?

Python argparse 忽略无法识别的参数

android - 如何在Android中获取子字符串?

c - 在另一个字符串中查找包含一个字符串的所有字符的最小窗口的长度