2017-06-22 67 views
0

我有一個數據幀:如何從浮點值數據框中列刪除字母

A   B 
10.1  33.3 
11.2  44.2s 
12.3  11.3s 
14.2s  * 
15.4s  nan 

我想輸出

A   B 
10.1  33.3 
11.2  44.2 
12.3  11.3 
14.2   0 
15.4   0 

如何刪除這些尾礦字母

我曾嘗試此代碼

第一種方法:

bulb_temp_df['A'].str.extract('(\d)').astype(float) 
bulb_temp_df['B'].str.extract('(\d)').astype(float) 

第二個辦法:

bulb_temp_df['A'] = 
bulb_temp_df['A'].astype(str) 
bulb_temp_df['A'] = 
bulb_temp_df['A'].map(lambda x: x.rstrip('aAbBcC')) 

這些不工作。他們不會從列中刪除拖尾。

第三種方法

bulb_temp_df[cols]=bulb_temp_df[cols].apply(lambda x:x.str.extract('(\d+\.\d+)',expand=False) 
           .astype(float) 
           .fillna(0))` 

所有這些都不能正常工作。最後一個刪除拖尾s,但它將沒有's'的值轉換爲零或南。

+0

嘗試在使用「rstrip」後剝離數據。例子'x.rstrip('aAbBcC')。strip()' –

+0

認爲這是個問題,所以如果你知道如何使用它,你可以這樣做:'x2 <-gsub(「[^ 0-9。]」 ,「」,as.character(unlist(x))); x2 [x2 ==「」] < - 0; x3 <-matrix(as.numeric(x2),5,2); colnames(x3)< - C( 「A」, 「B」); x3'。 – CCurtis

回答

1

首先,I'm將創建一個可重複的例子:

from io import StringIO 
import re 
import numpy as np 
import pandas as pd 

s = StringIO('''\ 
     A   B 
1 10.1  33.3 
2 11.2  44.2s 
3 12.3  11.3s 
4 14.2s   * 
5 15.4s  nan 
''') 


df = pd.read_table(s, sep='\s\s+',engine='python') 
df['A'] = df['A'].astype(str) 
df['B'] = df['B'].astype(str) 

現在,你可以使用正則表達式和re.sub

df = df.applymap(lambda x: re.sub(r'[^0-9^\-\.]+', '', x)).replace('', np.float64(0)).astype('float64') 

print(df) 

輸出:

 A  B 
1 10.1 33.3 
2 11.2 44.2 
3 12.3 11.3 
4 14.2 0.0 
5 15.4 0.0 
0

這不是超級乾淨,但它的工作原理!

import re 
import pandas as pd 

def cleanup(df, column): 
    temp = str(df[column]) 
    vals = re.split("(\d+\.\d+|\*|NaN)", temp)[1::2] 
    out = [float(a.replace('*', '0').replace('NaN', '0')) for a in vals] 

    return out 

bulb_temp_df = pd.DataFrame(data=list(zip(cleanup(bulb_temp_df, 'A'), cleanup(bulb_temp_df, 'B'))), columns=['A', 'B']) 

這是做什麼的,它使一個新的熊貓數據幀與格式化的數據。它通過搜索正則表達式(\d+\.\d+|\*|NaN)來設置它的格式,它可以找到所有的浮點數,*或NaN。使用這個正則表達式,我們根據找到的三種模式之一來分割變成字符串的列。然後我們把每一個奇數索引,因爲它持有什麼感興趣。

現在,我們有沒有s,*和Nans的浮點上的字符串列表。列表理解用0替換所有*和NaN,並將所有元素轉換爲浮點(因爲它們仍然是字符串)。

不優雅,但它的作品!

相關問題