У меня есть матрица, которая выглядит так:
[[1.10629335 0. 2.21258671 ... 0. 0. 0. ]
[0. 0. 0. ... 0. 0. 0. ]
[1.25571599 1.25571599 0. ... 0. 0. 0. ]
...
[1. 1.41956932 1.49244153 ... 0. 0. 0. ]
[0. 0. 0. ... 2.10342705 0. 1.05171352]
[0. 0. 0. ... 0. 0. 0. ]]
Я хочу просмотреть каждую строку и проверить, меньше ли запись, чем 1, если это так, тогда я беру эту запись и добавляю запись справа от нее. Например,
предположим, у меня есть
[[ 0.5 , 1]
[0 , 0]]
Первая запись - 0.5, что меньше 0, поэтому теперь у нас будет
[[ 1.5 , 1]
[0 , 0]]
Я думаю, это делает пример относительно ясным. Теперь, как мне применить это ко всей имеющейся у меня матрице?
Вот что я попробовал:
def modify_PITI_nums(adjusted_PITI_nums1):
for i in range(1,col_num):
if adjusted_PITI_nums1.iloc[0][i] <1:
return adjusted_PITI_nums1.iloc[:,i]+ (adjusted_PITI_nums1.iloc[:,i+1] -1)
else:
return adjusted_PITI_nums1.iloc[:,i]
adjusted_PITI_nums1.apply(lambda row: modify_PITI_nums(row['nper_0']), axis = 1)
Но я получаю эту ошибку:
AttributeError: ("'numpy.float64' object has no attribute 'iloc'", 'occurred at index a1')
Обратите внимание, что adjusted_PITI_nums1
- это кадр данных с содержимым матрицы, а заголовки выглядят так:
![enter image description here](https://i.stack.imgur.com/aDL53.png)