2016-12-14 60 views
3

刪除字符串我有一個數據幀df像這樣:從數據框中的所有項目與大熊貓

dic = {'A':['pap','cdf\nsdc','ert','dgx','kll\nsrw','sdq'], 
     'B':[1,4,6,2,5,6], 
     'C':['123\n12','34','55','321\n88','09','45']} 
df = pd.DataFrame(dic) 

我的目標是通過\n從字符串形成的所有列撈出什麼,如果它前面:abc\ndef --- >def

我能夠通過使用以下幾行代碼來實現我的目標:

for index,row in df.iterrows(): 
    df['A'][index]=row['A'].split('\n')[-1] 
    df['C'][index]=row['C'].split('\n')[-1] 

但是,我希望有一個更智能,更緊湊的方式來實現這樣的結果。你能建議一個比我更優雅的方式嗎(也許一些oneliner)?

注意:列B是浮動!

回答

4

可以在問題上的cols使用向量化str.split,如果你有一個更復雜的例子,那麼你就需要篩選感興趣的cols基於D型:

In [135]: 
df['A'] = df['A'].str.split('\n').str[-1] 
df['C'] = df['C'].str.split('\n').str[-1] 
df 

Out[135]: 
    A B C 
0 pap 1 12 
1 sdc 4 34 
2 ert 6 55 
3 dgx 2 88 
4 srw 5 09 
5 sdq 6 45 

的動態方法,:

In [142]: 
str_cols = df.select_dtypes([np.object]).columns 
str_cols 

Out[142]: 
Index(['A', 'C'], dtype='object') 

In [143]:  
for col in str_cols: 
    df[col] = df[col].str.split('\n').str[-1] 
​ 
df 

Out[143]: 
    A B C 
0 pap 1 12 
1 sdc 4 34 
2 ert 6 55 
3 dgx 2 88 
4 srw 5 09 
5 sdq 6 45