パンダ反復から別の列の行や削除文字列値を超えます

ハーヴェイ:

私は、データフレーム(持っているcarsML:次のようになります)

+-----------------+----------+--------------+
| carManufacturer | carModel |   carType    |
+-----------------+----------+--------------+
| VW              | POLO     | 1.4 TDI      |
| VW              | POLO     | POLO 1.4 TDI |
| VW              | POLO     | 1.6 TDI      |
| VW              | POLO     | 1.4          |
| VW              | POLO     | POLO 1.6 TDI |
|+-----------------+----------+--------------+

私はチェックの天気は、行を反復処理したいcarModelに含まれているcarTypeと、それは削除それ以上である場合。だからではなく、POLO 1.4 TDIを持っていることのそれだけで1.4 TDIでなければなりません。

一つの制約-一部はcarModels(同じように長い単一文字である可能1A)。その場合は、交換をスキップして、何もしません。スクリプトはのみのために動作するはずcarModelsであることlen(carModel)>1

これまでのところ私が持っています:

for row in carsML.itertuples():
    if len(row.carModel) > 1:
        carsML.iloc[row.Index].carType = row.carType.replace(row.carModel,"")

しかし、これはanything..Iは理由がわからない変更はありません。..

ヤロスラフBezděk:

私はあなたによく理解していれば、以下のワンライナーは、あなたの仕事をすることができます:

carsML.carType = carsML.apply(lambda row: row.carType.strip(row.carModel) if len(row.carModel) > 1 else row.carType, axis=1)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=4754&siteId=1