Skip to content

Commit 880d3b3

Browse files
committed
add upsert
1 parent ba698f8 commit 880d3b3

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def upsert(df, primary_key:str, record:dict):
2+
df.loc[record[primary_key]] = record
3+
return df

frame/tests/pandas_test.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,21 @@ def test_duckDB(self):
1515
conn.register("airports", df_airports)
1616
conn.close()
1717

18+
class SyntaxTestCase(unittest.TestCase):
19+
def test_upsert(self):
20+
from davidkhala.data.frame.pandas import upsert
21+
key ='id'
22+
df = pandas.DataFrame({
23+
key: [1, 2],
24+
'name': ['Alice', 'Bob'],
25+
'score': [85, 90]
26+
}).set_index(key)
27+
new_record = {'name': 'Charlie', 'score': 95, key:2}
28+
upsert(df, key, new_record)
29+
30+
self.assertEqual(95, df.at[2, 'score'])
31+
32+
1833

1934

2035
if __name__ == '__main__':

0 commit comments

Comments
 (0)