2016-12-14 59 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