docstr: Concatenate a dataframe to the bottom of the current one.
  
  Parameters
  ----------
  data : pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None
      Table to concat. Optional.
  
  **kwargs : pandas.DataFrame, numpy.ndarray, Iterable, dict, or None
      The named dataset to concat. Optional. You can only pass in 1
      dataset (including the one in the data parameter).
  
  Example
  -------
  >>> import streamlit as st
  >>> import pandas as pd
  >>> import numpy as np
  >>>
  >>> df1 = pd.DataFrame(np.random.randn(50, 20), columns=("col %d" % i for i in range(20)))
  >>>
  >>> my_table = st.table(df1)
  >>>
  >>> df2 = pd.DataFrame(np.random.randn(50, 20), columns=("col %d" % i for i in range(20)))
  >>>
  >>> my_table.add_rows(df2)
  >>> # Now the table shown in the Streamlit app contains the data for
  >>> # df1 followed by the data for df2.
  
  You can do the same thing with plots. For example, if you want to add
  more data to a line chart:
  
  >>> # Assuming df1 and df2 from the example above still exist...
  >>> my_chart = st.line_chart(df1)
  >>> my_chart.add_rows(df2)
  >>> # Now the chart shown in the Streamlit app contains the data for
  >>> # df1 followed by the data for df2.
  
  And for plots whose datasets are named, you can pass the data with a
  keyword argument where the key is the name:
  
  >>> my_chart = st.vega_lite_chart({
  ...     'mark': 'line',
  ...     'encoding': {'x': 'a', 'y': 'b'},
  ...     'datasets': {
  ...       'some_fancy_name': df1,  # <-- named dataset
  ...      },
  ...     'data': {'name': 'some_fancy_name'},
  ... }),
  >>> my_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword
docstr_tok: ["Concatenate","a","dataframe","to","the","bottom","of","the","current","one",".","Parameters","--","--","--","--","--","data",":","pandas.DataFrame",",","pandas.Styler",",","pyarrow.Table",",","numpy.ndarray",",","pyspark.sql.DataFrame",",","snowflake.snowpark.dataframe.DataFrame",",","Iterable",",","dict",",","or","None","Table","to","concat",".","Optional",".","*","*","kwargs",":","pandas.DataFrame",",","numpy.ndarray",",","Iterable",",","dict",",","or","None","The","named","dataset","to","concat",".","Optional",".","You","can","only","pass","in","1","dataset","(","including","the","one","in","the","data","parameter",")",".","Example","--","--","--","-",">",">",">","import","streamlit","as","st",">",">",">","import","pandas","as","pd",">",">",">","import","numpy","as","np",">",">",">",">",">",">","df1","=","pd.DataFrame","(","np.random.randn","(","50",",","20",")",",","columns=","(","``","col","%","d","''","%","i","for","i","in","range","(","20",")",")",")",">",">",">",">",">",">","my_table","=","st.table","(","df1",")",">",">",">",">",">",">","df2","=","pd.DataFrame","(","np.random.randn","(","50",",","20",")",",","columns=","(","``","col","%","d","''","%","i","for","i","in","range","(","20",")",")",")",">",">",">",">",">",">","my_table.add_rows","(","df2",")",">",">",">","#","Now","the","table","shown","in","the","Streamlit","app","contains","the","data","for",">",">",">","#","df1","followed","by","the","data","for","df2",".","You","can","do","the","same","thing","with","plots",".","For","example",",","if","you","want","to","add","more","data","to","a","line","chart",":",">",">",">","#","Assuming","df1","and","df2","from","the","example","above","still","exist","...",">",">",">","my_chart","=","st.line_chart","(","df1",")",">",">",">","my_chart.add_rows","(","df2",")",">",">",">","#","Now","the","chart","shown","in","the","Streamlit","app","contains","the","data","for",">",">",">","#","df1","followed","by","the","data","for","df2",".","And","for","plots","whose","datasets","are","named",",","you","can","pass","the","data","with","a","keyword","argument","where","the","key","is","the","name",":",">",">",">","my_chart","=","st.vega_lite_chart","(","{","...","'mark","'",":","'line","'",",","...","'encoding","'",":","{","'","x","'",":","'","a","'",",","'","y","'",":","'","b","'","}",",","...","'datasets","'",":","{","...","'some_fancy_name","'",":","df1",",","#","<","--","named","dataset","...","}",",","...","'data","'",":","{","'name","'",":","'some_fancy_name","'","}",",","...","}",")",",",">",">",">","my_chart.add_rows","(","some_fancy_name=df2",")","#","<","--","name","used","as","keyword"]
code: def add_rows(
      self, data: "Data" = None, **kwargs
  ) -> Optional["DeltaGenerator"]:
      """Concatenate a dataframe to the bottom of the current one.
  
      Parameters
      ----------
      data : pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None
          Table to concat. Optional.
  
      **kwargs : pandas.DataFrame, numpy.ndarray, Iterable, dict, or None
          The named dataset to concat. Optional. You can only pass in 1
          dataset (including the one in the data parameter).
  
      Example
      -------
      >>> import streamlit as st
      >>> import pandas as pd
      >>> import numpy as np
      >>>
      >>> df1 = pd.DataFrame(np.random.randn(50, 20), columns=("col %d" % i for i in range(20)))
      >>>
      >>> my_table = st.table(df1)
      >>>
      >>> df2 = pd.DataFrame(np.random.randn(50, 20), columns=("col %d" % i for i in range(20)))
      >>>
      >>> my_table.add_rows(df2)
      >>> # Now the table shown in the Streamlit app contains the data for
      >>> # df1 followed by the data for df2.
  
      You can do the same thing with plots. For example, if you want to add
      more data to a line chart:
  
      >>> # Assuming df1 and df2 from the example above still exist...
      >>> my_chart = st.line_chart(df1)
      >>> my_chart.add_rows(df2)
      >>> # Now the chart shown in the Streamlit app contains the data for
      >>> # df1 followed by the data for df2.
  
      And for plots whose datasets are named, you can pass the data with a
      keyword argument where the key is the name:
  
      >>> my_chart = st.vega_lite_chart({
      ...     'mark': 'line',
      ...     'encoding': {'x': 'a', 'y': 'b'},
      ...     'datasets': {
      ...       'some_fancy_name': df1,  # <-- named dataset
      ...      },
      ...     'data': {'name': 'some_fancy_name'},
      ... }),
      >>> my_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword
  
      """
      return self.dg._arrow_add_rows(data, **kwargs)
  
file_path: streamlit/lib/streamlit/elements/arrow.py
imports: from __future__ import annotations
  from collections.abc import Iterable
  from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Union, cast
  import pyarrow
  from typing_extensions import TypeAlias
  from streamlit import type_util
  from streamlit.elements.lib.column_config_utils import INDEX_IDENTIFIER, ColumnConfigMappingInput, apply_data_specific_configs, marshall_column_config, process_config_mapping, update_column_config
  from streamlit.elements.lib.pandas_styler_utils import marshall_styler
  from streamlit.proto.Arrow_pb2 import Arrow
  from streamlit.runtime.metrics_util import gather_metrics
label_desc: Use image node_id 3 for calling the ArrowMixin obj's underlying member method code with example usage: obj.add_rows(data) and returns: self