0
我正在努力正確合併熊貓中的幾個數據集。假設我在不同的時間測量了變量A,B和C.有時,我同時有A和B,有時候不會。我有三個數據幀,其中數據幀的索引是測量時間,還有一個測量列。如果我串連這些dataframes,我收到了一堆的NaN,我沒有測量,可能像在熊貓中合併多個數據集
idx | A | B | C
-----|-----|-----|----
0 | 1 | NaN | NaN
0 | NaN | 2 | 3
1 | 5 | 3 | NaN
在串聯,我非唯一索引的時間。我想要的是按時間排序,並用相同的時間索引合併行。這裏的理想結果是
idx | A | B | C
-----|-----|-----|----
0 | 1 | 2 | 3
1 | 5 | 3 | NaN
這將是第一種情況。爲了使事情更加複雜,我可能會有一個列D,它指定了測量的位置。因此,只要D中的條目與當時不同,我就需要允許這種摺疊保持非唯一索引。也許我們有
idx | A | B | C | D
-----|-----|-----|-----|-----
0 | 1 | NaN | NaN | Paris
0 | NaN | 2 | 3 | NYC
1 | 5 | 3 | NaN | NYC
1 | NaN | NaN | 0 | Paris
該數據幀不能被任何進一步的崩潰,因爲,d條件,它已經得到了獨特的時間和信息的倒塌成爲可能。
我仍然試圖讓我的腦袋圍繞着各種join/merge/concat操作以及它們是如何工作的,但是我會喜歡一兩個指針。
謝謝!
這不是類似:http://stackoverflow.com/questions/32378308/drop-nan-cells-and-move-non-null-values-according-to-datetime-index?所以'df.groupby('idx')。sum()'應該做你想做的事情? – EdChum
@EdChum:如果我按位置分組,然後sum(),我失去了時間序列。按位置分組會生成索引爲位置的數據幀。如果我將測量時間設置爲列和組,則不能總結位置(因爲它們是字符串),所以我會丟失該列。 – Quentin
爲A,B,C和D中的每一個創建一個索引爲'timestamp'和列'var_name','val'的數據框,從這裏創建concat,sort和unstack。 – acushner