删除以注释字符开头的熊猫数据框中的项

时间:2018-12-17 21:30:16

标签: python pandas

我想删除以注释字符开头的熊猫数据框中的所有行。例如:

>>> COMMENT_CHAR = '#'
>>> df
    first_name    last_name
0   #fill in here fill in here
1   tom           jones

>>> df.remove(df.columns[0], startswith=COMMENT_CHAR) # in pseudocode
>>> df
    first_name    last_name
0   tom           jones

这实际上如何完成?

1 个答案:

答案 0 :(得分:1)

设置

>>> data = [['#fill in here', 'fill in here'], ['tom', 'jones']]                                                       
>>> df = pd.DataFrame(data, columns=['first_name', 'last_name'])                                                       
>>> df                                                                                                                 
      first_name     last_name
0  #fill in here  fill in here
1            tom         jones

仅假设first_name列中的字符串很重要的解决方案:

>>> commented = df['first_name'].str.startswith('#')                                                                   
>>> df[~commented].reset_index(drop=True)                                                                              
  first_name last_name
0        tom     jones

假定您要删除first_name或last_name列中的字符串以'#'开头的行的解决方案:

>>> commented = df.apply(lambda col: col.str.startswith('#')).any(axis=1)                                             
>>> df[~commented].reset_index(drop=True)                                                                              
  first_name last_name
0        tom     jones

reset_index的目的是重新标记从零开始的行。

>>> df[~commented]                                                                                                     
  first_name last_name
1        tom     jones
>>>                                                                                                                    
>>> df[~commented].reset_index()                                                                                       
   index first_name last_name
0      1        tom     jones
>>>                                                                                                                    
>>> df[~commented].reset_index(drop=True)                                                                              
  first_name last_name
0        tom     jones