2016-02-13 43 views
4

可以说我有一个数据帧df作为从Pandas中的字符串中提取int?

A B 
1 V2 
3 W42 
1 S03 
2 T02 
3 U71 

我想有一个新的列(无论是在它的df年底或用它代替列B,因为它并不重要),仅提取来自列B的int。这是我想列C看起来像

C 
2 
42 
3 
2 
71 

所以,如果有在号码前面,如03 0,那么我想回到3不是03

我该怎么做?

回答

20

您可以转换为字符串并使用正则表达式提取整数。

df['B'].str.extract('(\d+)').astype(int) 
1

假设总有只有一个首字母

df['B'] = df['B'].str[1:].astype(int) 
0

我写了一个小环要做到这一点,因为我没有我的琴弦的数据帧,但在列表中。这样一来,你也可以加少许的if语句占花车:

output= '' 
input = 'whatever.007' 

for letter in input : 
     try : 
      int(letter) 
      output += letter 

     except ValueError : 
       pass 

     if letter == '.' : 
      output += letter 

输出=浮动(输出)

,或者你可以INT(输出)如果你喜欢。