pandasで条件を満たした列に、条件を満たした行の値を代入する


house
pricesのcsvで、lotfrontageが欠損しており、Lotshapeがregの時にLotAreaの平方根値を代入したく以下のコードを入れたのですが、動きませんでした。

[code]

    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'])
    
[/code]

エラーコードは以下です。

[code]

    ValueError: cannot reindex from a duplicate axis
    
[/code]

よろしくおねがいします。




**インデックスが重複している** のでしょう。よくあるエラーです。  
以下の内、どれかが動くと思うので試してみてください。

[code]

    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values)
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea']).values()
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea']).values
    
[/code]




**インデックスが重複している** のでしょう。よくあるエラーです。  
以下の内、どれかが動くと思うので試してみてください。

[code]

    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values)
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea']).values()
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea'].values())
    
    all_data.loc[(all_data['LotFrontage'].isnull()) & (all_data['LotShape'] == 'Reg'),'LotFrontage'] = np.sqrt(all_data['LotArea']).values
    
[/code]

