1

私はこの(やや不器用な)R関数を使用して、data.framesをマージし、そのうちの1つの順序を維持します。

MergeMaintainingOrder = function(Ordered,Unordered,ByWhatColumn){
  Ordered$TEMPINDEX = 1:length(Ordered[,1])
  MergedData = merge(Ordered,Unordered,by=ByWhatColumn)
  MergedData = MergedData[order(MergedData$TEMPINDEX),]
  MergedData$TEMPINDEX = NULL
  return(MergedData)
}

パンダで同じことを達成するにはどうすればよいですか? より厄介な方法はありますか、それとも同じ関数を書き直すべきですか?

ありがとう、

-N

4

1 に答える 1

1

pandas では、マージによってインデックスがリセットされますが、マージを行う前にインデックスをリセットすることで、これを簡単に回避できます。インデックスをリセットすると、「index」という新しい列が作成され、マージ後にインデックスを再作成するために使用できます。例えば:

Ordered.reset_index().merge(Ordered, Unordered, on=ByWhatColumn).set_index('index')

詳細については、この質問/回答を参照してください (@WouterOvermeire への帽子のヒント)

于 2013-03-30T13:39:23.243 に答える