I am trying to iterate through the dataframe and if the row's value 'Age' column is empty, it will move the value in 'Company' column to the 'Location' column of the previous row. Is there a quick way to do this?
As-Is
To-Be
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)
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.