私は自分自身を説明することができない状況に直面しています。まず、applyとtransform関数についてです。今まで私が理解していたのはデータフレーム全体に適用されますが、変換は各行で動作するため適用よりも遅くなりました。だからここに私のデータフレームは、私がdf.groupby('id')['size'].apply(lambda col: ', '.join(col))
を適用するときには、 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN
返品によるパンダのグループNANのapply vs transformの機能
を返します。しかし、私はdf.groupby('id')['size'].transform(lambda col: ', '.join(col))
、変換ならば、私はそれがあるため適用で作業したい 0 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 1 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 2 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 3 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 4 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 5 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12 6 40/6, 41/7, 42/8, 43/9, 44/10, 45/11, 46/12
を取得し、今 size id 40/6 2479 41/7 2479 42/8 2479 43/9 2479 44/10 2479 45/11 2479 46/12 2479
です私は3百万行を持ち、速度は重要な要素です。適用するか、変換のいずれか使用して
第二の問題
私のサイズのデータが空のセルを持っている、すなわち size id 2479 41/7 2479 2479 43/9 2479 44/10 2479 45/11 2479 46/12 2479
、私はこのエラーを取得し、 TypeError: sequence item 0: expected string, float found
私はヌル値にその原因を理解しています。私の質問は、どうすればこれを克服できますか?私は利用可能な値の和集合を必要とし、nullを無視します。
ありがとうございました。私はあなたがapply
でdropna
が必要だと思う
おそらく、あなたが集約すなわち 'df.groupby( 'ID')を探しています['size'] .gg(lambda col: '、' .join(col)) ' – Dark