I am trying to iterate through the dataframe and if the row's value Age column is empty, it will move the value in Name column to the Location column of the previous row. Is there a quick way to do this?
As-Is
To-Be
CodePudding user response:
You can use numpy:
arr = df.to_numpy()
arr[::2, -1] = arr[1::2,0]
df = pd.DataFrame(arr[::2], columns=df.columns)
Output:
Name Age Location
0 Amber 21 North
1 Max 23 South
2 Jackson 38 East
CodePudding user response:
Here is a solution that works by iterating over the rows and copying the row's Name value to the previous row's Location value. Note this will break if the first row's Age is empty.
I'm pretty sure there's a more efficient way of dropping the empty rows at the end, so I welcome edits!
d = {'Name': ["Amber", "North", "Max", "South", "Jackson", "East"], 'Age': ["21", "", "23", "", "38", ""], "Location":["","","","","",""]}
df = pandas.DataFrame(data=d)
rows_to_drop = []
for index, values in df.iterrows():
if not values["Age"]:
df["Location"][index-1] = df["Name"][index]
rows_to_drop.append(index)
df = df.drop(rows_to_drop)


