前提・実現したいこと
あるDataFrame(df1)を、そのdf1のある列でソートすることを考えています。
この時、その列の文字の順ではなく、別のDataFrame(df2)の列と同じ順番にソートしたいです。
具体的には、以下のソースコードにおいて、df1のsort_target列を、df2のsort_target列と同じ順番にソートし、df1_trueを作り出したいと考えています。
該当のソースコード
python
1name_list1= ['a', 'b', 'c', 'd'] 2name_list2 = ['d', 'a', 'c', 'b'] 3 4target_list1 = [1,2,3,4] 5target_list1_true =[4,1,3,2] 6target_list2 = ['human', 'animal', 'bird','chicken'] 7 8df1 = pd.DataFrame([name_list1, target_list1], index=['sort_target', 'num']).T 9df2 = pd.DataFrame([name_list2, target_list2], index=['sort_target', 'aaa']).T 10 11df1_true = pd.DataFrame([name_list2, target_list1_true], index=['sort_target', 'num']).T 12 13
試したこと
以下の方法について、今回の例ではたまたまうまくいくのですが、こちらの想定している本番データでは不可でした。
python
1true_col = np.array(df2['sort_target']).tolist() 2kizon_col = np.array(df1['sort_target']).tolist() 3 4sort_val = [] 5for key_ in kizon_col: 6 sort_val.append(true_col.index(key_)) 7df1['sort_val'] = sort_val 8df1.sort_values('sort_val')
以上、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。