We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent ba698f8 commit 880d3b3Copy full SHA for 880d3b3
2 files changed
frame/davidkhala/data/frame/pandas/__init__.py
@@ -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
@@ -15,6 +15,21 @@ def test_duckDB(self):
15
conn.register("airports", df_airports)
16
conn.close()
17
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
33
34
35
if __name__ == '__main__':
0 commit comments