2017-07-17 66 views
0

我正在清洗熊猫中的大型数据文件。一列('ID')包含字符串和整数的组合。如果某个特定ID的记录不止一个,用户惯例就是追加'*'(星号)和序列号。使用正则表达式在熊猫中擦除字符串

我需要向DF('CleanID')添加一列,并复制该ID,或者对于包含星号的任何ID去掉'*'加上所有后续字符。所以:

ID   CleanID 
A1000*1  A1000 
A1000*2  A1000 
B200   B200 
457   457 

回答

3

使用pd.Series.str.replace

df['CleanID'] = df.ID.astype(str).str.replace('\*.*', '') 
df 

     ID CleanID 
0 A1000*1 A1000 
1 A1000*2 A1000 
2  B200 B200 
3  457  457 

使用pd.Series.str.split

df['CleanID'] = df.ID.astype(str).str.split('*').str[0] 
df 

     ID CleanID 
0 A1000*1 A1000 
1 A1000*2 A1000 
2  B200 B200 
3  457  457