From 754a9705d5b426d5f9965fa5579c299c78ae038a Mon Sep 17 00:00:00 2001 From: HowToSD Date: Tue, 18 Feb 2025 01:36:09 -0800 Subject: [PATCH] Added Pandas Horizontal Concat and Pandas Vertical Concat nodes. --- __init__.py | 8 +++- docs/images/concat.png | Bin 0 -> 88782 bytes docs/ug.md | 6 +++ examples/workflows/concat.json | 1 + .../pandas_horizontal_concat.py | 42 ++++++++++++++++++ .../pandas_wrapper/pandas_vertical_concat.py | 42 ++++++++++++++++++ pyproject.toml | 2 +- 7 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 docs/images/concat.png create mode 100644 examples/workflows/concat.json create mode 100644 modules/pandas_wrapper/pandas_horizontal_concat.py create mode 100644 modules/pandas_wrapper/pandas_vertical_concat.py diff --git a/__init__.py b/__init__.py index 8f3ce5c..7c0423a 100644 --- a/__init__.py +++ b/__init__.py @@ -17,6 +17,7 @@ from .modules.pandas_wrapper.pandas_div_series import PandasDivSeries from .modules.pandas_wrapper.pandas_dropna import PandasDropNA from .modules.pandas_wrapper.pandas_group_by import PandasGroupBy from .modules.pandas_wrapper.pandas_head import PandasHead +from .modules.pandas_wrapper.pandas_horizontal_concat import PandasHorizontalConcat from .modules.pandas_wrapper.pandas_iloc_row_series import PandasIlocRowSeries from .modules.pandas_wrapper.pandas_iloc_rows_dataframe import PandasIlocRowsDataFrame from .modules.pandas_wrapper.pandas_index import PandasIndex @@ -55,6 +56,7 @@ from .modules.pandas_wrapper.pandas_sum import PandasSum from .modules.pandas_wrapper.pandas_summary import PandasSummary from .modules.pandas_wrapper.pandas_to_string import PandasToString from .modules.pandas_wrapper.pandas_var import PandasVar +from .modules.pandas_wrapper.pandas_vertical_concat import PandasVerticalConcat T = TypeVar("T") @@ -78,6 +80,7 @@ NODE_CLASS_MAPPINGS: Dict[str, Type[T]] = { "PandasDropNA": PandasDropNA, "PandasGroupBy": PandasGroupBy, "PandasHead": PandasHead, + "PandasHorizontalConcat": PandasHorizontalConcat, "PandasIlocRowSeries": PandasIlocRowSeries, "PandasIlocRowsDataFrame": PandasIlocRowsDataFrame, "PandasIndex": PandasIndex, @@ -115,7 +118,8 @@ NODE_CLASS_MAPPINGS: Dict[str, Type[T]] = { "PandasSum": PandasSum, "PandasSummary": PandasSummary, "PandasToString": PandasToString, - "PandasVar": PandasVar + "PandasVar": PandasVar, + "PandasVerticalConcat": PandasVerticalConcat } """ NODE_CLASS_MAPPINGS (Dict[str, Type[T]]): @@ -141,6 +145,7 @@ NODE_DISPLAY_NAME_MAPPINGS: Dict[str, str] = { "PandasDropNA": "Pandas Drop NA", "PandasGroupBy": "Pandas Group By", "PandasHead": "Pandas Head", + "PandasHorizontalConcat": "Pandas Horizontal Concat", "PandasIlocRowSeries": "Pandas Iloc Row Series", "PandasIlocRowsDataFrame": "Pandas Iloc Rows DataFrame", "PandasIndex": "Pandas Index", @@ -179,6 +184,7 @@ NODE_DISPLAY_NAME_MAPPINGS: Dict[str, str] = { "PandasSummary": "Pandas Summary", "PandasToString": "Pandas To String", "PandasVar": "Pandas Var", + "PandasVerticalConcat": "Pandas Vertical Concat" } """ NODE_DISPLAY_NAME_MAPPINGS (Dict[str, str]): diff --git a/docs/images/concat.png b/docs/images/concat.png new file mode 100644 index 0000000000000000000000000000000000000000..703989f4eb128847f7a321ce380b2368406bffaa GIT binary patch literal 88782 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 QiQKi;02(TDVggZDGc|A^~<9W77R+ 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 K`sKQg5&r^vbab2m literal 0 HcmV?d00001 diff --git a/docs/ug.md b/docs/ug.md index 3d04f17..532f942 100644 --- a/docs/ug.md +++ b/docs/ug.md @@ -79,6 +79,8 @@ This page was initially created using an older version of ComfyUI Data Analysis, | **Pandas Mul** | Multiply two DataFrames | | **Pandas Pow** | Raise a DataFrame to the power of another DataFrame | | **Pandas Sub** | Subtract a DataFrame from another DataFrame | +| **Pandas Horizontal Concat** | Concatenate two DataFrames horizontally (axis=1) | +| **Pandas Vertical Concat** | Concatenate two DataFrames vertically (axis=0) | **Binary operators for a DataFrame and a Series** | Node Name | Functionality | @@ -272,6 +274,10 @@ For binary operation for two DataFrames, you can use below operators: | **Pandas Mul** | Multiply two DataFrames | | **Pandas Pow** | Raise a DataFrame to the power of another DataFrame | | **Pandas Sub** | Subtract a DataFrame from another DataFrame | +| **Pandas Horizontal Concat** | Concatenate two DataFrames horizontally (axis=1) | +| **Pandas Vertical Concat** | Concatenate two DataFrames vertically (axis=0) | + +![Pandas Vertical Concat & Horizontal Concat](images/concat.png) For binary operation for a DataFrame and a Series, you can use below operators: | Node Name | Functionality | diff --git a/examples/workflows/concat.json b/examples/workflows/concat.json new file mode 100644 index 0000000..435c842 --- /dev/null +++ b/examples/workflows/concat.json @@ -0,0 +1 @@ +{"last_node_id":16,"last_link_id":14,"nodes":[{"id":5,"type":"PandasCreate","pos":[340.3745422363281,2836.533935546875],"size":[210,94.9962158203125],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[11],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasCreate"},"widgets_values":["A,B\n500,5000\n600,6000"]},{"id":15,"type":"PandasCreate","pos":[340.7720031738281,2668.344970703125],"size":[210,106.02879333496094],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[13],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasCreate"},"widgets_values":["A,B\n1,10\n2,20"]},{"id":14,"type":"PandasCreate","pos":[340.77191162109375,2421.255126953125],"size":[210,94.9962158203125],"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[14],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasCreate"},"widgets_values":["C,D\n500,5000\n600,6000"]},{"id":4,"type":"PandasCreate","pos":[342.41656494140625,2254.481201171875],"size":[210,106.02879333496094],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[4],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasCreate"},"widgets_values":["A,B\n1,10\n2,20"]},{"id":6,"type":"PandasHorizontalConcat","pos":[682.4112548828125,2363.37939453125],"size":[302.4000244140625,46],"flags":{},"order":5,"mode":0,"inputs":[{"name":"a_dataframe","type":"DATAFRAME","link":4,"localized_name":"a_dataframe"},{"name":"b_dataframe","type":"DATAFRAME","link":14,"localized_name":"b_dataframe"}],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[6],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasHorizontalConcat"},"widgets_values":[]},{"id":2,"type":"PandasShowDataFrame","pos":[1043.4501953125,2363.7451171875],"size":[210,104.60636138916016],"flags":{},"order":7,"mode":0,"inputs":[{"name":"dataframe","type":"DATAFRAME","link":6,"localized_name":"dataframe"}],"outputs":[{"name":"STRING","type":"STRING","links":[],"slot_index":0,"shape":6,"localized_name":"STRING"}],"properties":{"Node name for S&R":"PandasShowDataFrame"},"widgets_values":[" A B C D\n0 1 10 500 5000\n1 2 20 600 6000"]},{"id":13,"type":"PandasVerticalConcat","pos":[684.0742797851562,2751.436767578125],"size":[267,46],"flags":{},"order":4,"mode":0,"inputs":[{"name":"a_dataframe","type":"DATAFRAME","link":13,"localized_name":"a_dataframe"},{"name":"b_dataframe","type":"DATAFRAME","link":11,"localized_name":"b_dataframe"}],"outputs":[{"name":"DATAFRAME","type":"DATAFRAME","links":[12],"slot_index":0,"localized_name":"DATAFRAME"}],"properties":{"Node name for S&R":"PandasVerticalConcat"},"widgets_values":[]},{"id":12,"type":"PandasShowDataFrame","pos":[1046.1783447265625,2746.99560546875],"size":[210,178.95204162597656],"flags":{},"order":6,"mode":0,"inputs":[{"name":"dataframe","type":"DATAFRAME","link":12,"localized_name":"dataframe"}],"outputs":[{"name":"STRING","type":"STRING","links":[],"slot_index":0,"shape":6,"localized_name":"STRING"}],"properties":{"Node name for S&R":"PandasShowDataFrame"},"widgets_values":[" A B\n0 1 10\n1 2 20\n2 500 5000\n3 600 6000"]}],"links":[[4,4,0,6,0,"DATAFRAME"],[6,6,0,2,0,"DATAFRAME"],[11,5,0,13,1,"DATAFRAME"],[12,13,0,12,0,"DATAFRAME"],[13,15,0,13,0,"DATAFRAME"],[14,14,0,6,1,"DATAFRAME"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7622054019658013,"offset":[41.88950958615887,-1970.1509315749547]},"node_versions":{"data-analysis":"63c4dadeb8ece016f51f3beca9266a33a508d313"},"ue_links":[]},"version":0.4} \ No newline at end of file diff --git a/modules/pandas_wrapper/pandas_horizontal_concat.py b/modules/pandas_wrapper/pandas_horizontal_concat.py new file mode 100644 index 0000000..098e813 --- /dev/null +++ b/modules/pandas_wrapper/pandas_horizontal_concat.py @@ -0,0 +1,42 @@ +from typing import Any, Dict +import pandas as pd + + +class PandasHorizontalConcat: + """ + PandasHorizontalConcat: + A class for horizontally concatenating two pandas DataFrames. + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + """ + Defines the input types for the function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return { + "required": { + "a_dataframe": ("DATAFRAME", {}), + "b_dataframe": ("DATAFRAME", {}) + } + } + + RETURN_TYPES: tuple = ("DATAFRAME",) + FUNCTION: str = "f" + CATEGORY: str = "Data Analysis" + + def f(self, a_dataframe: pd.DataFrame, b_dataframe: pd.DataFrame) -> tuple: + """ + Horizontally concatenate two pandas DataFrames. + + Args: + a_dataframe (DataFrame): The first DataFrame. + b_dataframe (DataFrame): The second DataFrame. + + Returns: + tuple: A tuple containing the concatenated DataFrame. + """ + df_out = pd.concat([a_dataframe, b_dataframe], axis=1) + return (df_out,) diff --git a/modules/pandas_wrapper/pandas_vertical_concat.py b/modules/pandas_wrapper/pandas_vertical_concat.py new file mode 100644 index 0000000..a2d8681 --- /dev/null +++ b/modules/pandas_wrapper/pandas_vertical_concat.py @@ -0,0 +1,42 @@ +from typing import Any, Dict +import pandas as pd + + +class PandasVerticalConcat: + """ + PandasVerticalConcat: + A class for vertically concatenating two pandas DataFrames. + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + """ + Defines the input types for the function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return { + "required": { + "a_dataframe": ("DATAFRAME", {}), + "b_dataframe": ("DATAFRAME", {}) + } + } + + RETURN_TYPES: tuple = ("DATAFRAME",) + FUNCTION: str = "f" + CATEGORY: str = "Data Analysis" + + def f(self, a_dataframe: pd.DataFrame, b_dataframe: pd.DataFrame) -> tuple: + """ + Vertically concatenate two pandas DataFrames. + + Args: + a_dataframe (DataFrame): The first DataFrame. + b_dataframe (DataFrame): The second DataFrame. + + Returns: + tuple: A tuple containing the concatenated DataFrame. + """ + df_out = pd.concat([a_dataframe, b_dataframe], axis=0, ignore_index=True) + return (df_out,) diff --git a/pyproject.toml b/pyproject.toml index 99bbc24..969f5c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "data-analysis" description = "Data analysis custom modules for ComfyUI - Use Pandas & Matplotlib within ComfyUI" -version = "1.1.1" +version = "1.1.2" license = {file = "LICENSE"} [project.urls]