Bonjour,
The DataFrame creation under matrix:
data_matrix = {'x0': [0, 2, 0],
'x1':[2, 3, 1],
'x3':[4, 4, 1],
'x4':[6, 5, 1]}
data_mtrice = pd.DataFrame(data_matrix)
data_matrice = data_mtrice.T
Ce qui donne:
data_matrice.head()
Out[30]:
0 1 2
x0 0 2 0
x1 2 3 1
x3 4 4 1
x4 6 5 1
Each line is a cumulative sum. For example, 0+2= 2 then 0+2+2 = 4 then 0+2+2+2 = 6.
I am looking for a function to de-cumulate.
I tried to write:
def decumule(tableau):
decu_table = np.zeros(tableau.shape)
for ligne, element in enumerate(tableau.iloc()):
print("ligne = ",ligne)
for colon, elem in enumerate(tableau.iloc[ligne]):
if ligne > 0:
print("colonn",colon)
decu_table.iloc[[ligne, colon]] = tableau.iloc[[ligne, colon]] - tableau.iloc[[ligne - 1, colon]]
else:
decu_table.iloc[[ligne, colon]] = tableau.iloc[[ligne, colon]]
return decu_table
tentative = data_matrice.apply(lambda tableau: decumule(tableau))
which leads to
test10 = data_matrice.apply(lambda tableau: decumule(tableau))
ligne = 0
Traceback (most recent call last):
File "C:\Users\David\AppData\Local\Temp/ipykernel_14608/2847870468.py", line 1, in <module>
test10 = data_matrice.apply(lambda tableau: decumule(tableau))
File "C:\Users\David\anaconda3\lib\site-packages\pandas\core\frame.py", line 8740, in apply
return op.apply()
File "C:\Users\David\anaconda3\lib\site-packages\pandas\core\apply.py", line 688, in apply
return self.apply_standard()
File "C:\Users\David\anaconda3\lib\site-packages\pandas\core\apply.py", line 812, in apply_standard
results, res_index = self.apply_series_generator()
File "C:\Users\David\anaconda3\lib\site-packages\pandas\core\apply.py", line 828, in apply_series_generator
results[i] = self.f(v)
File "C:\Users\David\AppData\Local\Temp/ipykernel_14608/2847870468.py", line 1, in <lambda>
test10 = data_matrice.apply(lambda tableau: decumule(tableau))
File "C:\Users\David\AppData\Local\Temp/ipykernel_14608/3921423307.py", line 5, in decumule
for colon, elem in enumerate(tableau.iloc[ligne]):
TypeError: 'numpy.int64' object is not iterable
Do you have any idea what can go wrong?
Regards,
Atapalou