BUG: ipmt not working with numpy==1.26.4 when using a pandas df as input.
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduce el ejemplo con numpy 1.26.4 y pandas 2.2.1; después inspecciona numpy_financial/_financial.py alrededor de ipmt, especialmente la llamada fallida a np.where. Compara las entradas de columnas de pandas con el ejemplo funcional de arrays redimensionados; se considera completado cuando ipmt acepta las columnas de DataFrame indicadas sin generar una excepción y conserva el resultado esperado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the issue:
Not sure if bug or feature request, but I used to be able to use pandas dataframe columns as input arrays to npf.ipmt(). With numpy 1.26.4 and pandas 2.2.1 that yields a ValueError. I think it might be due to a change in np.broadcast_arrays()
Reproduce the code example:
import pandas as pd
import numpy_financial as npf
import numpy as np
df = pd.DataFrame({'rate': [0.05, 0.07], 'periods':[np.array([1,2,3,4]), np.array([1,2,3,4])], 'pv': [10000, 12000], 'nper': [10,10]})
#ValueError
npf.ipmt(df['rate'], df['periods'], df['nper'], df['pv'])
#Works
npf.ipmt(np.array(df['rate'].tolist()).reshape(-1,1), np.array(df['periods'].tolist()), np.array(df['nper'].tolist()).reshape(-1,1), np.array(df['pv'].tolist()).reshape(-1,1))
Error message:
Traceback (most recent call last)
Cell In[4], line 2
1 df = pd.DataFrame({'rate': [0.05, 0.07], 'periods':[np.array([1,2,3,4]), np.array([1,2,3,4])], 'pv': [10000, 12000], 'nper': [10,10]})
----> 2 npf.ipmt(df['rate'], df['periods'], df['nper'], df['pv'])
File ~\.conda\envs\test\Lib\site-packages\numpy_financial\_financial.py:394, in ipmt(rate, per, nper, pv, fv, when)
392 try:
393 ipmt = np.where(when == 1, ipmt/(1 + rate), ipmt)
--> 394 ipmt = np.where(np.logical_and(when == 1, per == 1), 0, ipmt)
395 except IndexError:
396 pass
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Runtime information:
1.26.4
3.11.8 | packaged by Anaconda, Inc. | (main, Feb 26 2024, 21:34:05) [MSC v.1916 64 bit (AMD64)]
[{'numpy_version': '1.26.4',
'python': '3.11.8 | packaged by Anaconda, Inc. | (main, Feb 26 2024, '
'21:34:05) [MSC v.1916 64 bit (AMD64)]',
'uname': uname_result(system='Windows', node='xxx', release='10', version='10.0.19045', machine='AMD64')},
{'simd_extensions': {'baseline': ['SSE', 'SSE2', 'SSE3'],
'found': ['SSSE3',
'SSE41',
'POPCNT',
'SSE42',
'AVX',
'F16C',
'FMA3',
'AVX2'],
'not_found': ['AVX512F',
'AVX512CD',
'AVX512_SKX',
'AVX512_CLX',
'AVX512_CNL',
'AVX512_ICL']}}]
Context for the issue:
No response
- Lenguaje dominante
- Python
- Estrellas
- 414
- Forks
- 106
- Merge medio
- 2 d 1 h
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 numpy/numpy-financial
-
An integer `rate` truncates `fv` to an integer and makes `ipmt`/`ppmt` raisePosiblemente ocupada @naseweisssss la tomó hace 10 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
numpy/numpy-financial#166 ·
Los mantenedores suelen responder en 3 días
-
Add CUMPRINC and CUMIPMT functionsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
numpy/numpy-financial#38 · 6 comentarios · 1 reacción ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
numpy/numpy-financial#131 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
DOC: Clarify the sign convention for fv in pmt documentation.Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertodocumentation sustain-2026
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
numpy/numpy-financial#130 · 8 comentarios ·
Los mantenedores suelen responder en 3 días
-
BUG: rate returning incorrect valuePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
numpy/numpy-financial#126 · 4 comentarios ·
Los mantenedores suelen responder en 3 días
Todos los issues de numpy/numpy-financial
Issues similares
-
Skill submission: negative-test-first (testing discipline; PR creation is collaborator-only)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ComposioHQ/awesome-claude-skills#2398 ·
Los mantenedores suelen responder en 2 días
-
bug converter
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
grafana/sigma-rule-deployment#435 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
datamodel-code-generator/datamodel-code-generator#5589 ·
Los mantenedores suelen responder en 1 día
-
Shell: serve the home app's Cookie Policy on a hard reloadPosiblemente ocupada @2001anshkaushik la tomó hoy. Abiertofeature module:ai
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
rocketride-org/rocketride-server#2899 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
GEFSv12
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100