#python #pandas
Вопрос:
Напишите программу Pandas, чтобы найти позиции чисел, кратных 5 из данного ряда.
Я получаю эту ошибку «Ошибка значения: длина значений (1) не соответствует длине индекса (9)», как я могу это исправить ниже приведен код :
import pandas as pd
import numpy as np
num_series = pd.Series(np.random.randint(1, 10, 9))
print("Original Series:")
print(num_series)
result = np.argwhere(num_series % 5==0)
print("Positions of numbers that are multiples of 5:")
print(result)
Ответ №1:
A pd.Series
не может быть передано напрямую np.argwhere
, Series.to_numpy
сначала преобразуйте:
result = np.argwhere(num_series.to_numpy() % 5 == 0)
В качестве альтернативы мы можем просто замаскировать индекс ряда и pd.Index
to_numpy
при необходимости преобразовать отфильтрованный:
result = num_series.index[num_series % 5 == 0].to_numpy()
Пример вывода:
import numpy as np
import pandas as pd
num_series = pd.Series(np.random.randint(1, 10, 9))
print("Original Series:")
print(num_series)
result = np.argwhere(num_series.to_numpy() % 5 == 0)
print("Positions of numbers that are multiples of 5:")
print(result)
Original Series:
0 7
1 8
2 5
3 7
4 8
5 6
6 8
7 6
8 8
dtype: int32
Positions of numbers that are multiples of 5:
[[2]]
import numpy as np
import pandas as pd
num_series = pd.Series(np.random.randint(1, 10, 9))
print("Original Series:")
print(num_series)
result = num_series.index[num_series % 5 == 0]
print("Positions of numbers that are multiples of 5:")
print("pd.Index:", result)
print("to_numpy:", result.to_numpy())
Original Series:
0 6
1 8
2 4
3 3
4 9
5 5
6 2
7 8
8 8
dtype: int32
Positions of numbers that are multiples of 5:
pd.Index: Int64Index([5], dtype='int64')
to_numpy: [5]
Ответ №2:
Попробуйте использовать:
# Solution 1:
res = np.argwhere(num_series.to_numpy() % 5 == 0)
# Solution 2:
res = num_series[num_series % 5 == 0]
Очевидно , когда вы используете np.argwhere
, вы передаете a pd.Series
в np.nonzero
функцию, которая попытается восстановить серию, но потерпит неудачу. Ранее существовал nonzero
метод для pd.Series
, но он был отвергнут (https://pandas.pydata.org/pandas-docs/version/0.25.3/reference/api/pandas.Series.nonzero.html#pandas-series-nonzero).