2017-01-05 6 views
1

受け取った注文を処理する小さなPythonプログラムを作成しました。しかし、基準値の変更のために私は私のDFをマージするために使用される変更されます。Python Pandasで列に特殊文字が含まれていると重複する行

例:

Data

問題は、私は、私は、顧客が戻っている知っているように、新しいPO番号に旧PO番号をマージするために使用される、です。しかし、最近私は3c456/4c345の代わりに3c456である部分注文を受け始めました。これは、私の顧客が現在1つの製品だけを更新していることを意味します。 私のpd.mergeコードは部分オーダーをもう見つけません。

私のコードの新しいPOは部分的であるとスラッシュの前または後の値である可能性があるため

df = pd.merge(old_PO_file, New_PO_file, on =PO-number) 

ました。 そのセルにスラッシュ(/)がある場合は、PO番号列のすべての行を複製したいと考えています

可能であれば教えてください。あなたは、元のDataFramejoinためSeriesを作成するためのstackstr.splitを使用することができます

おかげ

+1

質問 –

+0

でコードを共有してくださいは、上でこの記事を読むのに時間がかかるしてください[どのように提供しますか(最小の、完全で検証可能な例)(http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)を提供する方法://stackoverflow.com/help/mcve)、質問を修正してくださいそれに応じて。良い質問をする方法(http://stackoverflow.com/help/how-to-ask)も役立つかもしれません。 – jezrael

+0

@PatrickHaughコードを追加しました。それは以前は単純なpd.mergeコードでした。 –

答えて

1

print (df) 
    Sold-to PO-Number Sold-to-party 
0  1234  6d1234 abc company 
1  2345 3c456/4c345 edf company 
2  5679  9f639 mno company 

df1 = df.drop('PO-Number', axis=1) \ 
     .join(df['PO-Number'] \ 
     .str \ 
     .split('/', expand=True) \ 
     .stack() \ 
     .reset_index(level=1, drop=True).rename('PO-Number')) \ 
     .reset_index(drop=True) 

print (df1) 
    Sold-to Sold-to-party PO-Number 
0  1234 abc company 6d1234 
1  2345 edf company  3c456 
2  2345 edf company  4c345 
3  5679 mno company  9f639 
+0

ありがとうございます。出来た。しかし、私はあなたがそれをやった方法を理解するのに多くの時間がかかるでしょう....ありがとう –

関連する問題