# Merges multiple DataFrames, ignores Exceptions if desired
```python
$pip install a-pandas-ex-multimerge
# Ignores all Exceptions, but prints them, this behavior can be changed by passing disable=True
from a_pandas_ex_multimerge import pd_add_multimerge
import pandas as pd
pd_add_multimerge()
df1 = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"],
},
index=[0, 1, 2, 3],
)
df2 = pd.DataFrame(
{
"A": ["A4", "A5", "A6", "A7"],
"B": ["B4", "B5", "B6", "B7"],
"C": ["C4", "C5", "C6", "C7"],
"D": ["D4", "D5", "D6", "D7"],
},
index=[4, 5, 6, 7],
)
df3 = pd.DataFrame(
{
"A": ["A8", "A9", "A10", "A11"],
"B": ["B8", "B9", "B10", "B11"],
"C": ["C8", "C9", "C10", "C11"],
"D": ["D8", "D9", "D10", "D11"],
},
index=[8, 9, 10, 11],
)
t1 = df1.ds_multimerge(
dataframes=[df2, df3],
on_index=False,
columns_to_merge=None,
print_exception=True,
how="outer",
disable=False,
)
t2 = df2.ds_multimerge(
dataframes=[df2, df3],
on_index=True,
columns_to_merge=None,
print_exception=False,
how="outer",
disable=False,
)
t3 = df3.ds_multimerge(
dataframes=[df1, df2, ""],
on_index=False,
columns_to_merge=None, # will merge on all common columns
print_exception=True,
how="outer",
disable=False,
)
t4 = df1.ds_multimerge(
dataframes=[df2, df3, 1],
on_index=True,
columns_to_merge=None,
print_exception=False,
how="outer",
disable=False,
)
t5 = df1.ds_multimerge(
dataframes=[
df2,
df3,
1,
], # won't raise an Exception. The string will be ignored
on_index=False,
columns_to_merge=["A", "B"],
how="outer",
print_exception=False,
disable=False,
)
t6 = df2.ds_multimerge(
dataframes=[
df1,
df3,
1,
], # won't raise an Exception. The number will be ignored
on_index=False,
columns_to_merge=["C", "D"],
how="outer",
print_exception=True,
disable=False,
)
t7 = df2["A"].ds_multimerge(
dataframes=[
df1,
df3,
1,
], # won't raise an Exception. The number will be ignored
on_index=False,
columns_to_merge=None,
how="outer",
print_exception=True,
)
Ignores all Exceptions, but prints them, this behavior can be changed by passing disable=True
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
Can only merge Series or DataFrame objects, a <class 'str'> was passed
Can only merge Series or DataFrame objects, a <class 'int'> was passed
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
descriptor 'union' for 'set' objects doesn't apply to a 'function' object
Can only merge Series or DataFrame objects, a <class 'int'> was passed
t7
Out[4]:
A B_x C_x D_x B_y C_y D_y
0 A4 NaN NaN NaN NaN NaN NaN
1 A5 NaN NaN NaN NaN NaN NaN
2 A6 NaN NaN NaN NaN NaN NaN
3 A7 NaN NaN NaN NaN NaN NaN
4 A0 B0 C0 D0 NaN NaN NaN
5 A1 B1 C1 D1 NaN NaN NaN
6 A2 B2 C2 D2 NaN NaN NaN
7 A3 B3 C3 D3 NaN NaN NaN
8 A8 NaN NaN NaN B8 C8 D8
9 A9 NaN NaN NaN B9 C9 D9
10 A10 NaN NaN NaN B10 C10 D10
11 A11 NaN NaN NaN B11 C11 D11
t1
Out[5]:
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7
8 A8 B8 C8 D8
9 A9 B9 C9 D9
10 A10 B10 C10 D10
11 A11 B11 C11 D11
t2
Out[6]:
A_x B_x C_x D_x A_y B_y C_y D_y A B C D
4 A4 B4 C4 D4 A4 B4 C4 D4 NaN NaN NaN NaN
5 A5 B5 C5 D5 A5 B5 C5 D5 NaN NaN NaN NaN
6 A6 B6 C6 D6 A6 B6 C6 D6 NaN NaN NaN NaN
7 A7 B7 C7 D7 A7 B7 C7 D7 NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN A8 B8 C8 D8
9 NaN NaN NaN NaN NaN NaN NaN NaN A9 B9 C9 D9
10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10
11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11
t3
Out[7]:
A B C D
0 A8 B8 C8 D8
1 A9 B9 C9 D9
2 A10 B10 C10 D10
3 A11 B11 C11 D11
4 A0 B0 C0 D0
5 A1 B1 C1 D1
6 A2 B2 C2 D2
7 A3 B3 C3 D3
8 A4 B4 C4 D4
9 A5 B5 C5 D5
10 A6 B6 C6 D6
11 A7 B7 C7 D7
t4
Out[8]:
A_x B_x C_x D_x A_y B_y C_y D_y A B C D
0 A0 B0 C0 D0 NaN NaN NaN NaN NaN NaN NaN NaN
1 A1 B1 C1 D1 NaN NaN NaN NaN NaN NaN NaN NaN
2 A2 B2 C2 D2 NaN NaN NaN NaN NaN NaN NaN NaN
3 A3 B3 C3 D3 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN A4 B4 C4 D4 NaN NaN NaN NaN
5 NaN NaN NaN NaN A5 B5 C5 D5 NaN NaN NaN NaN
6 NaN NaN NaN NaN A6 B6 C6 D6 NaN NaN NaN NaN
7 NaN NaN NaN NaN A7 B7 C7 D7 NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN A8 B8 C8 D8
9 NaN NaN NaN NaN NaN NaN NaN NaN A9 B9 C9 D9
10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10
11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11
t5
Out[9]:
A B C_x D_x C_y D_y C D
0 A0 B0 C0 D0 NaN NaN NaN NaN
1 A1 B1 C1 D1 NaN NaN NaN NaN
2 A2 B2 C2 D2 NaN NaN NaN NaN
3 A3 B3 C3 D3 NaN NaN NaN NaN
4 A4 B4 NaN NaN C4 D4 NaN NaN
5 A5 B5 NaN NaN C5 D5 NaN NaN
6 A6 B6 NaN NaN C6 D6 NaN NaN
7 A7 B7 NaN NaN C7 D7 NaN NaN
8 A8 B8 NaN NaN NaN NaN C8 D8
9 A9 B9 NaN NaN NaN NaN C9 D9
10 A10 B10 NaN NaN NaN NaN C10 D10
11 A11 B11 NaN NaN NaN NaN C11 D11
t6
Out[10]:
A_x B_x C D A_y B_y A B
0 A4 B4 C4 D4 NaN NaN NaN NaN
1 A5 B5 C5 D5 NaN NaN NaN NaN
2 A6 B6 C6 D6 NaN NaN NaN NaN
3 A7 B7 C7 D7 NaN NaN NaN NaN
4 NaN NaN C0 D0 A0 B0 NaN NaN
5 NaN NaN C1 D1 A1 B1 NaN NaN
6 NaN NaN C2 D2 A2 B2 NaN NaN
7 NaN NaN C3 D3 A3 B3 NaN NaN
8 NaN NaN C8 D8 NaN NaN A8 B8
9 NaN NaN C9 D9 NaN NaN A9 B9
10 NaN NaN C10 D10 NaN NaN A10 B10
11 NaN NaN C11 D11 NaN NaN A11 B11
t7
Out[11]:
A B_x C_x D_x B_y C_y D_y
0 A4 NaN NaN NaN NaN NaN NaN
1 A5 NaN NaN NaN NaN NaN NaN
2 A6 NaN NaN NaN NaN NaN NaN
3 A7 NaN NaN NaN NaN NaN NaN
4 A0 B0 C0 D0 NaN NaN NaN
5 A1 B1 C1 D1 NaN NaN NaN
6 A2 B2 C2 D2 NaN NaN NaN
7 A3 B3 C3 D3 NaN NaN NaN
8 A8 NaN NaN NaN B8 C8 D8
9 A9 NaN NaN NaN B9 C9 D9
10 A10 NaN NaN NaN B10 C10 D10
11 A11 NaN NaN NaN B11 C11 D11
```
Raw data
{
"_id": null,
"home_page": "https://github.com/hansalemaos/a_pandas_ex_multimerge",
"name": "a-pandas-ex-multimerge",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "group,intersections,DataFrame,merge,concat",
"author": "Johannes Fischer",
"author_email": "<aulasparticularesdealemaosp@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/dd/91/91a588e5dfdb335d406d60b64261aa79c6561b36c3acc6da4cb43e458131/a_pandas_ex_multimerge-0.10.tar.gz",
"platform": null,
"description": "\n# Merges multiple DataFrames, ignores Exceptions if desired \n\n\n\n```python\n\n\n\n$pip install a-pandas-ex-multimerge\n\n\n\n\n\n# Ignores all Exceptions, but prints them, this behavior can be changed by passing disable=True\n\n\n\nfrom a_pandas_ex_multimerge import pd_add_multimerge\n\nimport pandas as pd\n\n\n\npd_add_multimerge()\n\ndf1 = pd.DataFrame(\n\n {\n\n \"A\": [\"A0\", \"A1\", \"A2\", \"A3\"],\n\n \"B\": [\"B0\", \"B1\", \"B2\", \"B3\"],\n\n \"C\": [\"C0\", \"C1\", \"C2\", \"C3\"],\n\n \"D\": [\"D0\", \"D1\", \"D2\", \"D3\"],\n\n },\n\n index=[0, 1, 2, 3],\n\n)\n\n\n\ndf2 = pd.DataFrame(\n\n {\n\n \"A\": [\"A4\", \"A5\", \"A6\", \"A7\"],\n\n \"B\": [\"B4\", \"B5\", \"B6\", \"B7\"],\n\n \"C\": [\"C4\", \"C5\", \"C6\", \"C7\"],\n\n \"D\": [\"D4\", \"D5\", \"D6\", \"D7\"],\n\n },\n\n index=[4, 5, 6, 7],\n\n)\n\n\n\ndf3 = pd.DataFrame(\n\n {\n\n \"A\": [\"A8\", \"A9\", \"A10\", \"A11\"],\n\n \"B\": [\"B8\", \"B9\", \"B10\", \"B11\"],\n\n \"C\": [\"C8\", \"C9\", \"C10\", \"C11\"],\n\n \"D\": [\"D8\", \"D9\", \"D10\", \"D11\"],\n\n },\n\n index=[8, 9, 10, 11],\n\n)\n\nt1 = df1.ds_multimerge(\n\n dataframes=[df2, df3],\n\n on_index=False,\n\n columns_to_merge=None,\n\n print_exception=True,\n\n how=\"outer\",\n\n disable=False,\n\n)\n\nt2 = df2.ds_multimerge(\n\n dataframes=[df2, df3],\n\n on_index=True,\n\n columns_to_merge=None,\n\n print_exception=False,\n\n how=\"outer\",\n\n disable=False,\n\n)\n\n\n\nt3 = df3.ds_multimerge(\n\n dataframes=[df1, df2, \"\"],\n\n on_index=False,\n\n columns_to_merge=None, # will merge on all common columns\n\n print_exception=True,\n\n how=\"outer\",\n\n disable=False,\n\n)\n\nt4 = df1.ds_multimerge(\n\n dataframes=[df2, df3, 1],\n\n on_index=True,\n\n columns_to_merge=None,\n\n print_exception=False,\n\n how=\"outer\",\n\n disable=False,\n\n)\n\n\n\nt5 = df1.ds_multimerge(\n\n dataframes=[\n\n df2,\n\n df3,\n\n 1,\n\n ], # won't raise an Exception. The string will be ignored\n\n on_index=False,\n\n columns_to_merge=[\"A\", \"B\"],\n\n how=\"outer\",\n\n print_exception=False,\n\n disable=False,\n\n)\n\nt6 = df2.ds_multimerge(\n\n dataframes=[\n\n df1,\n\n df3,\n\n 1,\n\n ], # won't raise an Exception. The number will be ignored\n\n on_index=False,\n\n columns_to_merge=[\"C\", \"D\"],\n\n how=\"outer\",\n\n print_exception=True,\n\n disable=False,\n\n)\n\nt7 = df2[\"A\"].ds_multimerge(\n\n dataframes=[\n\n df1,\n\n df3,\n\n 1,\n\n ], # won't raise an Exception. The number will be ignored\n\n on_index=False,\n\n columns_to_merge=None,\n\n how=\"outer\",\n\n print_exception=True,\n\n)\n\n\n\n Ignores all Exceptions, but prints them, this behavior can be changed by passing disable=True\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\nCan only merge Series or DataFrame objects, a <class 'str'> was passed\n\nCan only merge Series or DataFrame objects, a <class 'int'> was passed\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\ndescriptor 'union' for 'set' objects doesn't apply to a 'function' object\n\nCan only merge Series or DataFrame objects, a <class 'int'> was passed\n\nt7\n\nOut[4]:\n\n A B_x C_x D_x B_y C_y D_y\n\n0 A4 NaN NaN NaN NaN NaN NaN\n\n1 A5 NaN NaN NaN NaN NaN NaN\n\n2 A6 NaN NaN NaN NaN NaN NaN\n\n3 A7 NaN NaN NaN NaN NaN NaN\n\n4 A0 B0 C0 D0 NaN NaN NaN\n\n5 A1 B1 C1 D1 NaN NaN NaN\n\n6 A2 B2 C2 D2 NaN NaN NaN\n\n7 A3 B3 C3 D3 NaN NaN NaN\n\n8 A8 NaN NaN NaN B8 C8 D8\n\n9 A9 NaN NaN NaN B9 C9 D9\n\n10 A10 NaN NaN NaN B10 C10 D10\n\n11 A11 NaN NaN NaN B11 C11 D11\n\nt1\n\nOut[5]:\n\n A B C D\n\n0 A0 B0 C0 D0\n\n1 A1 B1 C1 D1\n\n2 A2 B2 C2 D2\n\n3 A3 B3 C3 D3\n\n4 A4 B4 C4 D4\n\n5 A5 B5 C5 D5\n\n6 A6 B6 C6 D6\n\n7 A7 B7 C7 D7\n\n8 A8 B8 C8 D8\n\n9 A9 B9 C9 D9\n\n10 A10 B10 C10 D10\n\n11 A11 B11 C11 D11\n\nt2\n\nOut[6]:\n\n A_x B_x C_x D_x A_y B_y C_y D_y A B C D\n\n4 A4 B4 C4 D4 A4 B4 C4 D4 NaN NaN NaN NaN\n\n5 A5 B5 C5 D5 A5 B5 C5 D5 NaN NaN NaN NaN\n\n6 A6 B6 C6 D6 A6 B6 C6 D6 NaN NaN NaN NaN\n\n7 A7 B7 C7 D7 A7 B7 C7 D7 NaN NaN NaN NaN\n\n8 NaN NaN NaN NaN NaN NaN NaN NaN A8 B8 C8 D8\n\n9 NaN NaN NaN NaN NaN NaN NaN NaN A9 B9 C9 D9\n\n10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10\n\n11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11\n\nt3\n\nOut[7]:\n\n A B C D\n\n0 A8 B8 C8 D8\n\n1 A9 B9 C9 D9\n\n2 A10 B10 C10 D10\n\n3 A11 B11 C11 D11\n\n4 A0 B0 C0 D0\n\n5 A1 B1 C1 D1\n\n6 A2 B2 C2 D2\n\n7 A3 B3 C3 D3\n\n8 A4 B4 C4 D4\n\n9 A5 B5 C5 D5\n\n10 A6 B6 C6 D6\n\n11 A7 B7 C7 D7\n\nt4\n\nOut[8]:\n\n A_x B_x C_x D_x A_y B_y C_y D_y A B C D\n\n0 A0 B0 C0 D0 NaN NaN NaN NaN NaN NaN NaN NaN\n\n1 A1 B1 C1 D1 NaN NaN NaN NaN NaN NaN NaN NaN\n\n2 A2 B2 C2 D2 NaN NaN NaN NaN NaN NaN NaN NaN\n\n3 A3 B3 C3 D3 NaN NaN NaN NaN NaN NaN NaN NaN\n\n4 NaN NaN NaN NaN A4 B4 C4 D4 NaN NaN NaN NaN\n\n5 NaN NaN NaN NaN A5 B5 C5 D5 NaN NaN NaN NaN\n\n6 NaN NaN NaN NaN A6 B6 C6 D6 NaN NaN NaN NaN\n\n7 NaN NaN NaN NaN A7 B7 C7 D7 NaN NaN NaN NaN\n\n8 NaN NaN NaN NaN NaN NaN NaN NaN A8 B8 C8 D8\n\n9 NaN NaN NaN NaN NaN NaN NaN NaN A9 B9 C9 D9\n\n10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10\n\n11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11\n\nt5\n\nOut[9]:\n\n A B C_x D_x C_y D_y C D\n\n0 A0 B0 C0 D0 NaN NaN NaN NaN\n\n1 A1 B1 C1 D1 NaN NaN NaN NaN\n\n2 A2 B2 C2 D2 NaN NaN NaN NaN\n\n3 A3 B3 C3 D3 NaN NaN NaN NaN\n\n4 A4 B4 NaN NaN C4 D4 NaN NaN\n\n5 A5 B5 NaN NaN C5 D5 NaN NaN\n\n6 A6 B6 NaN NaN C6 D6 NaN NaN\n\n7 A7 B7 NaN NaN C7 D7 NaN NaN\n\n8 A8 B8 NaN NaN NaN NaN C8 D8\n\n9 A9 B9 NaN NaN NaN NaN C9 D9\n\n10 A10 B10 NaN NaN NaN NaN C10 D10\n\n11 A11 B11 NaN NaN NaN NaN C11 D11\n\nt6\n\nOut[10]:\n\n A_x B_x C D A_y B_y A B\n\n0 A4 B4 C4 D4 NaN NaN NaN NaN\n\n1 A5 B5 C5 D5 NaN NaN NaN NaN\n\n2 A6 B6 C6 D6 NaN NaN NaN NaN\n\n3 A7 B7 C7 D7 NaN NaN NaN NaN\n\n4 NaN NaN C0 D0 A0 B0 NaN NaN\n\n5 NaN NaN C1 D1 A1 B1 NaN NaN\n\n6 NaN NaN C2 D2 A2 B2 NaN NaN\n\n7 NaN NaN C3 D3 A3 B3 NaN NaN\n\n8 NaN NaN C8 D8 NaN NaN A8 B8\n\n9 NaN NaN C9 D9 NaN NaN A9 B9\n\n10 NaN NaN C10 D10 NaN NaN A10 B10\n\n11 NaN NaN C11 D11 NaN NaN A11 B11\n\nt7\n\nOut[11]:\n\n A B_x C_x D_x B_y C_y D_y\n\n0 A4 NaN NaN NaN NaN NaN NaN\n\n1 A5 NaN NaN NaN NaN NaN NaN\n\n2 A6 NaN NaN NaN NaN NaN NaN\n\n3 A7 NaN NaN NaN NaN NaN NaN\n\n4 A0 B0 C0 D0 NaN NaN NaN\n\n5 A1 B1 C1 D1 NaN NaN NaN\n\n6 A2 B2 C2 D2 NaN NaN NaN\n\n7 A3 B3 C3 D3 NaN NaN NaN\n\n8 A8 NaN NaN NaN B8 C8 D8\n\n9 A9 NaN NaN NaN B9 C9 D9\n\n10 A10 NaN NaN NaN B10 C10 D10\n\n11 A11 NaN NaN NaN B11 C11 D11\n\n\n\n\n\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Merges multiple DataFrames, ignores Exceptions if desired",
"version": "0.10",
"split_keywords": [
"group",
"intersections",
"dataframe",
"merge",
"concat"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6bc11df1da6314cd5c92891c3530fdc9",
"sha256": "702ad09e099a81e27fd59206591c50251baf56a758a489adb6b784551dec549e"
},
"downloads": -1,
"filename": "a_pandas_ex_multimerge-0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6bc11df1da6314cd5c92891c3530fdc9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8674,
"upload_time": "2022-12-15T12:35:04",
"upload_time_iso_8601": "2022-12-15T12:35:04.518987Z",
"url": "https://files.pythonhosted.org/packages/0f/2a/8cb9a6ba64a96abb5d3d74bb9669086bb3db5fec692b2ac98eabce81c1eb/a_pandas_ex_multimerge-0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "2bd7c0bd4141fbfc994841470fccc213",
"sha256": "8f1e0e41fd855eecab5d1b6c16bed5d8632c1afe367c5ea332d659491762e5ff"
},
"downloads": -1,
"filename": "a_pandas_ex_multimerge-0.10.tar.gz",
"has_sig": false,
"md5_digest": "2bd7c0bd4141fbfc994841470fccc213",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7284,
"upload_time": "2022-12-15T12:35:06",
"upload_time_iso_8601": "2022-12-15T12:35:06.534175Z",
"url": "https://files.pythonhosted.org/packages/dd/91/91a588e5dfdb335d406d60b64261aa79c6561b36c3acc6da4cb43e458131/a_pandas_ex_multimerge-0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-15 12:35:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "hansalemaos",
"github_project": "a_pandas_ex_multimerge",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "a-pandas-ex-multimerge"
}