Calling methods on invalid types
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
Direção de pesquisa
Comece lendo a discussão vinculada, a issue #11 e a issue #6; em seguida, compare os casos de redução de DataFrame e Series mostrados. A issue não indica arquivos de implementação nem testes; para considerá-la concluída, seria necessária uma política acordada para Dtypes inválidos e um comportamento consistente entre as operações.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
This is a follow up of the discussions in:
- https://github.com/pydata-apis/dataframe-api/issues/6#issuecomment-639754182
- #11 (question:
pandas has parameters (bool_only, numeric_only) to let only apply the operation over columns of certain types only. Do we want it?)
See this example:
>>> df[['name', 'population']].mean()
population 2.729748e+07
dtype: float64
Even if the name column is selected, it is being ignored, since the mean of a string columns does not make sense. As opposed to raising an exception.
Many reductions implement a parameter to let control this behavior:
df[['name', 'population']].mean(numeric_only=False)
TypeError: could not convert string to float:
If we consider more methods to be applied directly over a dataframe, for example:
>>> df[['first_'name', 'last_name']].str.lower()
We may end up with a huge amount of string_only, bool_only, numeric_only parameters. All meaning something similar, but IMO adding a decent amount of complexity, and being difficult to keep the behavior consistent.
My preference would be to always raise, but being a software engineer I'm biased, and I guess many users may want this "magic".
So, I guess implementing an option, for example: pandas.options.mode.invalid_dtype {raise or skip} could make more sense.
The main problem with this approach is probably that it's not as easy to define the behavior for each operation:
(df.mean(numeric_only=True)
.mean(numeric_only=False))
Personally, I don't see this as an issue. IMO, the behavior depends more on the user than on the operation. I'd say for production code, having to be explicit, and selecting the columns to operate with, makes more sense. While in a notebook, avoiding exceptions with this sort of "magic" seems to be more useful.
I guess for Series/1-column DataFrame (see #6) it always makes sense to raise an exception.
Thoughts?
- Linguagem predominante
- Python
- Estrelas
- 106
- Forks
- 22
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de data-apis/dataframe-api
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
data-apis/dataframe-api#363 · 1 comentário · 8 reações ·
-
Row ordering design choiceAbertaAPI design
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
data-apis/dataframe-api#356 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
data-apis/dataframe-api#355 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
data-apis/dataframe-api#352 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
data-apis/dataframe-api#351 ·
Todas as issues de data-apis/dataframe-api
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
EchoTools/nevr-runtime#651 ·
Mantenedores costumam responder em até 1 dia
-
bug frontend rt sev-3
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
noontide-co/mainbranch#1211 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
[1.x Bug] run-operation --sql reports success but rolls back writes on transaction-capable adaptersAbertatriage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
dbt-labs/dbt#16784 · 1 comentário ·
Mantenedores costumam responder em até 1 dia