code: def test_gen_global_feature_multi_id(self):
      dates = pd.date_range("1/1/2019", periods=8)
      data = np.random.randn(8, 3)
      df = pd.DataFrame(
          {
              "datetime": dates,
              "values": data[:, 0],
              "A": data[:, 1],
              "B": data[:, 2],
              "id": ["00"] * 4 + ["01"] * 4,
          }
      )
      from tsfresh.feature_extraction import MinimalFCParameters
  
      for params in [MinimalFCParameters()]:
          output_df, _ = generate_global_features(
              input_df=df,
              column_id="id",
              column_sort="datetime",
              default_fc_parameters=params,
          )
  
          assert "datetime" in output_df.columns
          assert "values" in output_df.columns
          assert "A" in output_df.columns
          assert "B" in output_df.columns
          assert "id" in output_df.columns
  
          for col in output_df.columns:
              if col in ["datetime", "values", "A", "B", "id"]:
                  continue
              assert (
                  len(set(output_df[output_df["id"] == "00"][col])) == 1
              )
              assert (
                  len(set(output_df[output_df["id"] == "01"][col])) == 1
              )
              assert (
                  output_df[output_df["id"] == "00"][col].isna().sum()
                  == 0
              )
              assert (
                  output_df[output_df["id"] == "01"][col].isna().sum()
                  == 0
              )
  
file_path: analytics-zoo/pyzoo/test/zoo/chronos/data/utils/test_feature.py
imports: import pytest
  import pandas
  import numpy
  from test.zoo.pipeline.utils.test_utils import ZooTestCase
  from zoo.chronos.data.utils.feature import generate_dt_features, generate_global_features
  import tsfresh
label_desc: Use image node_id 5 for calling the TestFeature obj's underlying member method code with example usage: obj.test_gen_global_feature_multi_id() without return types