[Bug]: DeferredSeries.duplicated() raises WontImplementError due to incorrect column indexing
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Lee sdks/python/apache_beam/dataframe/frames.py alrededor de la implementación de DeferredSeries.duplicated() y la reproducción del issue. Comprueba cómo se representa el resultado de DataFrame duplicated() y cómo se gestionan los nombres de Series. Se considera terminado cuando DeferredSeries.duplicated() devuelve una máscara de duplicados diferida sin generar WontImplementError, conserva el nombre de Series cuando existe y el caso reportado tiene cobertura.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened?
Description
Calling duplicated() on any DeferredSeries in the Beam DataFrame API (e.g., s.duplicated(keep=False) or s.duplicated(keep="any")) fails and raises a WontImplementError.
Root Cause
@frame_base.with_docs_from(pd.Series)
@frame_base.args_to_kwargs(pd.Series)
@frame_base.populate_defaults(pd.Series)
@frame_base.maybe_inplace
def duplicated(self, keep):
# Re-use the DataFrame based duplicated, extract the series back out
df = self._wrap_in_df()
return df.duplicated(keep=keep)[df.columns[0]]
The implementation attempts to extract a Series from the deferred DataFrame result using string-based column indexing. However, indexing a Series with a string key is unsupported when it produces a non-deferred result, causing the WontImplementError.
Steps to Reproduce
import apache_beam as beam
import pandas as pd
from apache_beam.dataframe.convert import to_dataframe
with beam.Pipeline() as p:
pcoll = p | beam.Create([
{'a': 1},
{'a': 2},
{'a': 1},
])
df = to_dataframe(pcoll)
# Crashes with WontImplementError
result = df['a'].duplicated(keep=False)
Traceback
apache_beam.dataframe.frame_base.WontImplementError:
Indexing a series with key of type <class 'str'> is not supported
because it produces a non-deferred result.
For more information see:
https://s.apache.org/dataframe-non-deferred-result
Proposed Fix
Replace the existing implementation with the following:
- # Re-use the DataFrame based duplicated, extract the series back out
+ # Re-use the DataFrame based duplicated
df = self._wrap_in_df()
-
- return df.duplicated(keep=keep)[df.columns[0]]
+ result = df.duplicated(keep=keep)
+ if self.name is not None:
+ return result.rename(self.name)
+ return result
This avoids unsupported string-based indexing and returns the deferred duplicate mask directly, preserving the original Series name when available.
Issue Priority
Priority: P2 (default; most bugs should be filed as P2).
Issue Components
- Component: Python SDK
- Component: Java SDK
- Component: Go SDK
- Component: TypeScript SDK
- Component: IO connector
- Component: Beam YAML
- Component: Beam examples
- Component: Beam playground
- Component: Beam katas
- Component: Website
- Component: Infrastructure
- Component: Spark Runner
- Component: Flink Runner
- Component: Prism Runner
- Component: Twister2 Runner
- Component: Hazelcast Jet Runner
- Component: Google Cloud Dataflow Runner
- Lenguaje dominante
- Java
- Estrellas
- 8.7k
- Forks
- 4.8k
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 295
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/beam
-
[Failing Test]: BigqueryClient.queryUnflattened fails BigQuery ITs on a transient 503Posiblemente ocupada @mxtymoshyk la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
apache/beam#39624 · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
[Bug]: PubsubIO used in batch incorrect batch cutoff sizePosiblemente ocupada @1fanwang la tomó hace 67 días. Abiertobug io P3 pinned pubsub
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/beam#28011 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
build P3 sub-task
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
bug gcp io java P3
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
Todos los issues de apache/beam
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
intellij-elixir/intellij-elixir#4585 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
MetricsHub/metricshub-community#1474 ·
Los mantenedores suelen responder en 1 día
-
Booking links: POST /api/booking-links with a null element in "availabilityRules" throws NullPointerException and answers 500 instead of 400Posiblemente ocupada @chibenwa la tomó hoy. Abiertoai-driven-fuzzing bug claude Minor
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
linagora/twake-calendar-side-service#1322 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
PathnameExpander incorrectly interprets regex metacharacters in wildcard patternsPosiblemente ocupada @jiteshkhatri11 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
javapathfinder/jpf-core#662 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
3.x: `NullPointerException` ("Null 'propertyType' passed") deserializing raw `Map.Entry` with a `Shape.POJO` config overridePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
FasterXML/jackson-databind#6366 ·
Los mantenedores suelen responder en 1 día