code: def test_drop_duplicates_NA():
      # none
      df = pd.DataFrame(
          {
              "A": [
                  None,
                  None,
                  "foo",
                  "bar",
                  "foo",
                  "bar",
                  "bar",
                  "foo",
              ],
              "B": [
                  "one",
                  "one",
                  "two",
                  "two",
                  "two",
                  "two",
                  "one",
                  "two",
              ],
              "C": [1.0, np.nan, np.nan, np.nan, 1.0, 1.0, 1, 1.0],
              "D": range(8),
          }
      )
      df = cudf.DataFrame.from_pandas(df)
      # single column
      result = df.drop_duplicates("A")
      expected = df.to_pandas().loc[[0, 2, 3]]
      assert_df(result, expected)
  
      result = df.drop_duplicates("A", keep="last")
      expected = df.to_pandas().loc[[1, 6, 7]]
      assert_df(result, expected)
  
      result = df.drop_duplicates("A", keep=False)
      expected = df.to_pandas().loc[[]]  # empty df
      assert_df(result, expected)
      assert len(result) == 0
  
      # multi column
      result = df.drop_duplicates(["A", "B"])
      expected = df.to_pandas().loc[[0, 2, 3, 6]]
      assert_df(result, expected)
  
      result = df.drop_duplicates(["A", "B"], keep="last")
      expected = df.to_pandas().loc[[1, 5, 6, 7]]
      assert_df(result, expected)
  
      result = df.drop_duplicates(["A", "B"], keep=False)
      expected = df.to_pandas().loc[[6]]
      assert_df(result, expected)
  
      # nan
      df = pd.DataFrame(
          {
              "A": [
                  "foo",
                  "bar",
                  "foo",
                  "bar",
                  "foo",
                  "bar",
                  "bar",
                  "foo",
              ],
              "B": [
                  "one",
                  "one",
                  "two",
                  "two",
                  "two",
                  "two",
                  "one",
                  "two",
              ],
              "C": [1.0, np.nan, np.nan, np.nan, 1.0, 1.0, 1, 1.0],
              "D": range(8),
          }
      )
      df = cudf.DataFrame.from_pandas(df)
      # single column
      result = df.drop_duplicates("C")
      expected = df[:2]
      assert_df(result, expected)
  
      result = df.drop_duplicates("C", keep="last")
      expected = df.to_pandas().loc[[3, 7]]
      assert_df(result, expected)
  
      result = df.drop_duplicates("C", keep=False)
      expected = df.to_pandas().loc[[]]  # empty df
      assert_df(result, expected)
      assert len(result) == 0
  
      # multi column
      result = df.drop_duplicates(["C", "B"])
      expected = df.to_pandas().loc[[0, 1, 2, 4]]
      assert_df(result, expected)
  
      result = df.drop_duplicates(["C", "B"], keep="last")
      expected = df.to_pandas().loc[[1, 3, 6, 7]]
      assert_df(result, expected)
  
      result = df.drop_duplicates(["C", "B"], keep=False)
      expected = df.to_pandas().loc[[1]]
      assert_df(result, expected)
  
imports: import itertools
  import random
  import numpy
  import pandas
  import pytest
  import cudf
  from cudf import concat
  from cudf.testing._utils import _create_pandas_series_float64_default, assert_eq, assert_exceptions_equal
label_desc: Use image node_id 13 for calling a global function with example usage: test_drop_duplicates_NA() without return types