3

これはバグかもしれませんが、私が見逃しているパンダの微妙な点かもしれません。2つのデータフレームを組み合わせていますが、結果のインデックスが並べ替えられていません。奇妙なことに、以前にソートされたインデックスを維持できなかったcombine_firstのインスタンスを1つも見たことがありません。

>>> a1
                            X  Y
DateTime                                    
2012-11-06 16:00:11.477563      8        80
2012-11-06 16:00:11.477563      8        63
>>> a2
                        X  Y
DateTime                                   
2012-11-06 15:11:09.006507      1        37
2012-11-06 15:11:09.006507      1        36
>>> a1.combine_first(a2)
                            X  Y
DateTime                                   
2012-11-06 16:00:11.477563      8        80
2012-11-06 16:00:11.477563      8        63
2012-11-06 15:11:09.006507      1        37
2012-11-06 15:11:09.006507      1        36
>>> a2.combine_first(a1)
                            X  Y
DateTime                                    
2012-11-06 16:00:11.477563      8        80
2012-11-06 16:00:11.477563      8        63
2012-11-06 15:11:09.006507      1        37
2012-11-06 15:11:09.006507      1        36

再現できるので、喜んでご提案させていただきます。何が起こっているかについての推測は大歓迎です。

4

2 に答える 2

1

このcombine_first関数はindex.union、インデックスを組み合わせて並べ替えるために使用します。index.uniondocstring は、可能な場合にのみソートすることを示しているため、必ずしもcombine_first設計上ソートされた結果を返すとは限りません。

非単調インデックスの場合、index.unionはソートを試みますが、例外がある場合はソートされていない結果を返します。これがバグかどうかはわかりませんがindex.union、例の日時インデックスのような単調なインデックスをソートしようとさえしません。

私はGitHuba2.combine_first(a1).sort_index()でイシューをオープンしましたが、今のところ、任意の日時インデックスに対して行う必要があると思います。

更新: このバグは GitHub で修正されました

于 2012-11-08T11:28:24.480 に答える
0

本当に使うつもり.append()ですか?

試す:-

a2.append(a1)

combine_first実際にはappend操作ではありません。参照 - http://pandas.pydata.org/pandas-docs/dev/basics.html?highlight=combine_first#combining-overlapping-data-sets:-

ときどき発生する問題は、一方の値が他方よりも優先される 2 つの類似したデータ セットの組み合わせです。例としては、特定の経済指標を表す 2 つのデータ系列があり、そのうちの 1 つが「高品質」であると見なされます。ただし、品質の低いシリーズは、履歴をさらにさかのぼるか、より完全なデータ カバレッジを持つ可能性があります。そのため、2 つの DataFrame オブジェクトを組み合わせて、一方の DataFrame の欠損値が条件付きで他方の DataFrame の同様のラベルの値で埋められるようにしたいと考えています。

http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.append.html?highlight=appendappendは_

このフレームの列とインデックスの末尾に other の列を追加し、新しいオブジェクトを返します。このフレームに含まれていない列は、新しい列として追加されます。

于 2012-11-08T00:55:25.663 に答える