ほとんどのパンダの問題として、私は以前問題があったと推測していますが、私は直接的な答えは見つけられず、パフォーマンスも心配しています。私のデータセットは大きいので、私はが最も効率的であることを願っています。これを行う方法。DataFrameリストから転載
問題 私は2つのデータフレームを持っています - dfAにはdfBからのIDのリストが含まれています。私は合計ここ
と
- 転置列としてこれらのIDを値がDFBから
- 崩壊繰り返し列を見上げて
- は、IDを交換し、集計したいことはイラストです:
DFA
dfA = pd.DataFrame({'a_id':['0000001','0000002','0000003','0000004'], 'list_of_b_id':[['2','3','7'],[],['1','2','3','4'],['6','7']] }) +------+--------------+ | a_id | list_of_b_id | +------+--------------+ | 1 | [2, 3, 7] | +------+--------------+ | 2 | [] | +------+--------------+ | 3 | [1, 2, 3, 4] | +------+--------------+ | 4 | [6, 7] | +------+--------------+
DFBここ
dfB = pd.DataFrame({'b_id':['1','2','3','4','5','6','7'], 'replacement': ['Red','Red','Blue','Red','Green','Blue','Red'] }) +------+-------------+ | b_id | replacement | +------+-------------+ | 1 | Red | +------+-------------+ | 2 | Red | +------+-------------+ | 3 | Blue | +------+-------------+ | 4 | Red | +------+-------------+ | 5 | Orange | +------+-------------+ | 6 | Blue | +------+-------------+ | 7 | Red | +------+-------------+
ゴール(最終結果) は、私は可能な限り最も効率的な方法で、最終的に得ることを望んだものです。
実際には、私はdfAとdfBの両方で5M以上のobsを持ち、dfBで〜50個の一意の値を持つことができます。なぜこれをハードコードするのではなく動的な方法で行う必要があるのかを説明します。
+------+-----+------+ | a_id | Red | Blue | +------+-----+------+ | 1 | 2 | 1 | +------+-----+------+ | 2 | 0 | 0 | +------+-----+------+ | 3 | 3 | 1 | +------+-----+------+ | 4 | 1 | 1 | +------+-----+------+
dfAの50KレコードとdfBの5Mレコードのサンプルでは、これは0.67分かかりました! – Josh
その良い時間、受け入れてくれてありがとう! – jezrael