Well answer for question one could be:

```
#step 1 Import pandas
import pandas as pd
df=pd.DataFrame(data)
# step 2 printing the dataframe
df
# step 3 Calculating the pecentage:
df['percentage of sales'] = (df['Sales'] / df['Sales'].sum())*100
# step 4 :joining this table percentage to the main dataframe
pd.concat([df, df[['percentage of sales ']]], axis=1, sort=False)
```

Answer for question 2: its depends, what is the condition you want to do.

that is one way ,

but the easy way to answer question 1 and 2 is to convert dataframe into a numpy array then do the operation , and then bring it back to dataframe. 1 check this answers: Add column for percentage of total to Pandas dataframe

```
#Converting the percentage column to numpy array
npprices=df['percentage'].to_numpy()
npprices
#loop through the rows and fill the row next row with value from previous row, ASSUMING previous row is not zero.
for i in range(len(npprices)):
if npprices[i]==0:
npprices[i]=npprices[i-1]
#converting in to dataframe back
percentage1=pd.DataFrame({'percentage2':npprices})
# the joing this percentage row to to dataframe
df2i=pd.concat([df, percentage1[['percentage2']]], axis=1, sort=False)
```

NOTE I added it twice, by mistake. But of course, there could be other easier approach, I hope this helps

Some answers: I used:

CLICK HERE to find out more related problems solutions.