Skip to content

Commit 709f379

Browse files
committed
0.0.8 add upsert
1 parent ba698f8 commit 709f379

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

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/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "davidkhala.data.frame"
3-
version = "0.0.7"
3+
version = "0.0.8"
44
description = ""
55
authors = [{ name = "David Liu", email = "david-khala@hotmail.com" }]
66
requires-python = ">=3.10"

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+
prim_key ='id'
22+
df = pandas.DataFrame({
23+
prim_key: [1, 2],
24+
'name': ['Alice', 'Bob'],
25+
'score': [85, 90]
26+
}).set_index(prim_key)
27+
new_record = {'name': 'Charlie', 'score': 95, prim_key:2}
28+
upsert(df, prim_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)