2017-02-02 4 views
2

に文字を追加:フィルターの重複と私は、次のデータフレームに取り組んでいます各項目

print (df) 

    LN  FN 
0 Smith  Jason 
1 Smith  Pat 
2 Smith  Liz 
3 Kim  Jim 
4 Hazel  Vickie 
5 Sun  Sandra 

は私が[「LN」]に重複名をフィルタリングしてから名前の最初の文字を入れたいです['FN']。この例では、['LN']のスペースを使って 'Smith'に 'J'、 'P'、 'L'を追加したいと思います。

所望の出力が次のようになります。

print (df) 

    LN  FN 
0 Smith J Jason 
1 Smith P Pat 
2 Smith L Liz 
3 Kim  Jim 
4 Hazel  Vickie 
5 Sun  Sandra 

私の試み:以下

私のコードは、所望の出力を達成したが、これを達成するための、よりクリーンでパンダのような方法があるはずです。

df1 = df.loc[df.duplicated('LN', False)] 
df2 = pd.DataFrame(df1.LN + ' '+ df1.FN.str.get(0)) 
df3 = pd.concat([df1,df2], axis=1) 
df3 = df3[[0, 'FN']] 
df3.columns = ['LN', 'FN'] 
df.update(df3) 

ありがとうございました!

答えて

4

あなたはこのようにそれを行うことができます。

In [41]: df.loc[df.LN.duplicated(keep=False), 'LN'] += ' ' + df.FN.str[0] 

In [42]: df 
Out[42]: 
     LN  FN 
0 Smith J Jason 
1 Smith P  Pat 
2 Smith L  Liz 
3  Kim  Jim 
4 Hazel Vickie 
5  Sun Sandra 
+0

はあなたの助けのためにありがとうございました! – comproch

関連する問題