2016-06-20 13 views
0

私はこれに似た質問があります:Pandas DataFrame: remove unwanted parts from strings in a columnパンダの文字列から文字を削除する

だから私は使用:

temp_dataframe['PPI'] = temp_dataframe['PPI'].map(lambda x: x.lstrip('PPI/')) 

項目の、ほとんどは、すべての 'PPI /' で始まるなく。 「PPI /」接尾辞の付いていない項目でこのエラーが発生した場合:

AttributeError: 'float' object has no attribute 'lstrip'

ここに何か不足していますか?

+0

値の欠損や実際の浮きが原因ですか?これを引き起こす行の価値を示すことができますか? (ここで学び、理解しようとしている) – bakkal

答えて

1

使用replace

temp_dataframe['PPI'].replace('PPI/','',regex=True,inplace=True) 

またはstring.replace

temp_dataframe['PPI'].str.replace('PPI/','') 
+0

ありがとうございました。とても有難い! –

2

使用はstr.lstripをベクトル化:

temp_dataframe['PPI'] = temp_dataframe['PPI'].str.lstrip('PPI/') 

あなたがそれらをマスクまたはそれらを交換する必要がありますので、あなたは欠損値をしていることのように見える:

temp_dataframe['PPI'].fillna('', inplace=True) 

または

temp_dataframe.loc[temp_dataframe['PPI'].notnull(), 'PPI'] = temp_dataframe['PPI'].str.lstrip('PPI/') 

多分より良い方法はstr.startswithを使用してフィルタリングし、を使用することです210及び削除する接頭辞の後の文字列にアクセス:

temp_dataframe.loc[temp_dataframe['PPI'].str.startswith('PPI/'), 'PPI'] = temp_dataframe['PPI'].str.split('PPI/').str[1] 

を@JonClementsがlstripは空白を削除するのではなく、あなたが後にしているものであるプレフィックスを削除していることを指摘したように。

更新

別の方法は、任意のプレフィックスを検索正規表現パターンを通過し、接頭辞の後にすべての文字を抽出することである。

temp_dataframe['PPI'].str.extract('(?:PPI/)?(.*)', expand=False) 
+2

'.lstrip'はOPが望むものではないことを忘れないでください。' P'、 'I'または'/'で始まる全ての文字を削除します。文字列 - 実際に接頭辞を削除していない場合... –

+0

@JonClementsがtrueの場合、 – EdChum

+2

またはおそらく 'temp_dataframe ['PPI']を更新します。str.extract( '(?:PPI /)?(.*)' 、expand = False) ' –

関連する問題