簡體   English   中英

如何在字符串的(單元格)數組中查找字符,Python

[英]How to find a character in a (cell) array of strings, Python

我正在用 Pandas (pd.read_csv) 加載 .csv。 通常這會產生浮點數,但是我的一些數據集在 .csv 文件中包含的一些 > 100000 數字(例如 33x60000 的矩陣)中有一個“q”。 像這樣:'-13q27.20148186934421000000'(q 並不總是在同一個地方)。 這導致 Pandas 將它們視為字符串而不是數字。 這使得無法轉換為浮點數,因此我的問題是:如何輕松找到“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

您可以從特定列(此處命名為結果)中刪除所有字符(此處為 q):

data['result'] = data['result'].map(lambda x: x.lstrip('q').rstrip('q'))

之后您可以將您的列轉換為浮動。

data['result'] = data['result'].astype(float)

或替代:

df['result'] = df['result'].str.replace(r'\D', '').astype(float)
df.replace(['q'], 0.0, inplace=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM