2017-06-26 13 views
-2

私はさまざまなサイズのリスト(AAA、BBB、CBC)を持っています。私はリストを比較したいと思います。例えば:私が探していた結果が異なる長さの2つのデータフレームで同じ値を見つける

A01 = AAA, BBB, CBC 
B02 = AAA, CBC 
C03 = AAA, BBB, CBC 
D04 = CBC 
E05 = AAA 
F06 = BBB, CBC 
G07 = AAA 

次のようになり

AAA BBB CBC 
--- --- --- 
A01 A01 A01 
B02 C03 B02 
C03 F06 D04 
E05   F06 
G07 

はリストをループして比較することなくこれを行う方法はありますか?私は "isin"コマンドを成功せずに使用しようとしました。ありがとうございました。

+0

あなたのリストソートようだ、それは仮定のですか? – Setop

+0

あなたのデータフレームはどのように見えますか?それはシリーズのシリーズですか?インデックスと列は何ですか? – victor

+0

リストはソートされません。この例は、異なるサイズの列の問題を強調するために作成されたものです。 – getaglow

答えて

2

のは、次のアプローチを使用してみましょう:

AAA = ['A01','B02','C03','E05','G07'] 
BBB = ['A01','C03','F06'] 
CBC = ['A01','B02','D04','F06'] 
lists = ['AAA','BBB','CBC'] 
df_out = pd.concat([pd.Series(eval(i)) for i in lists], axis=1, keys=lists) 
df_out.stack().reset_index(name='value').groupby('value')['level_1'].apply(', '.join) 

出力:

value 
A01 AAA, BBB, CBC 
B02   AAA, CBC 
C03   BBB, AAA 
D04    CBC 
E05    AAA 
F06   BBB, CBC 
G07    AAA 
Name: level_1, dtype: object 
+0

ありがとうございます。これは魅力のように機能し、パンダの使い方を教えてくれます。再びありがとう – getaglow

関連する問題