code: def add_items(self, dataframe, hide_cols=()):
          
          # replace "None" values with ""
          dataframe = dataframe.fillna("")
          # remove any columns that shouldn't be shown
          for col in hide_cols:
              if col in dataframe.columns:
                  del dataframe[col]
          # add more rows
          self.AppendRows(len(dataframe))
          columns = dataframe.columns
          row_num = -1
          # fill in all rows with appropriate values
          for ind, row in dataframe.iterrows():
              row_num += 1
              for col_num, col in enumerate(columns):
                  value = row[col]
                  self.SetCellValue(row_num, col_num, str(value))
                  # set citation default value
                  if col == 'citations':
                      citation = row['citations']
                      if (citation is None) or (citation is np.nan):
                              self.SetCellValue(row_num, col_num, 'This study')
                      else:
                          if 'This study' not in citation:
                              if len(citation):
                                  citation += ':'
                              citation += 'This study'
                              self.SetCellValue(row_num, col_num, citation)
          self.row_labels.extend(dataframe.index)
docs: Add items and/or update existing items in grid