1
我正在嘗試做一些我認爲應該是單行程式的東西,但我正在努力做正確的事。熊貓:將小型數據框合併爲大型,用小型覆蓋
我有一個很大的數據框,我們將其稱爲lg
,以及一個小數據框,我們將其稱爲sm
。每個數據幀有一個start
和一個end
列,以及多個其他列,它們在兩個數據幀(爲了簡單起見,我們將調用所有這些列type
)之間是相同的。有時候,sm
將具有相同start
和end
爲lg
,如果是這樣的話,我想sm
的type
覆蓋lg
的type
。
這裏的設置:
lg = pd.DataFrame({'start':[1,2,3,4], 'end':[5,6,7,8], 'type':['a','b','c','d']})
sm = pd.DataFrame({'start':[9,2,3], 'end':[10,6,11], 'type':['e','f','g']})
...請注意,只有匹配['start','end']
組合是['2','6']
我想要的輸出:
start end type
0 1 5 a
1 2 6 f # where sm['type'] overwrites lg['type'] because of matching ['start','end']
2 3 7 c
3 3 11 g # where there is no overwrite because 'end' does not match
4 4 8 d
5 9 10 e # where this row is added from sm
我試過的.merge()
多個版本,merge_ordered()
等,但無濟於事。實際上,我已經將它與merge_ordered()
和drop_duplicates()
配合使用,僅僅意識到它只是刪除了字母表中較早的副本,而不是因爲它來自sm
。
知道我失去了一些東西簡單。謝謝! – pshep123
不客氣,很高興它適合你。 – Psidom