Могу ли я спросить, как получить индекс строки в DataFrame?
В частности, я могу получить индекс строк из df.loc.
idx = data.loc[data.name == "Smith"].index
Я даже могу получить индекс строки из df.loc, используя data.index, например:
idx = data.loc[data.index == 5].index
Однако я не могу получить индекс непосредственно из самой строки (то есть из row.index вместо df.loc []. Index). Я пытался использовать эти коды:
idx = data.iloc[5].index
Результатом этого кода являются имена столбцов.
Для обеспечения контекста мне нужно получить индекс определенной строки (вместо строк из df.loc), чтобы использовать df.apply для каждой строки.
Я планирую использовать df.apply, чтобы применить код к каждой строке и скопировать данные из строки, расположенной непосредственно над ними.
def retrieve_gender (row):
# This is a panel data, whose only data in 2000 is already keyed in. Time-invariant data in later years are the same as those in 2000.
if row["Year"] == 2000:
pass
elif row["Year"] == 2001: # To avoid complexity, let's use only year 2001 as example.
idx = row.index # This is wrong code.
row["Gender"] = row.iloc[idx-1]["Gender"]
return row["Gender"]
data["Gender"] = data.apply(retrieve_gender, axis=1)