我正在使用 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.replace
与regex=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/