У меня есть кадр данных, который выглядит следующим образом:
v1 v2
0 a A1
1 b A2,A3
2 c B4
3 d A5, B6, B7
Я хочу изменить этот кадр данных так, чтобы любая строка, имеющая более одного значения в столбце v2
, реплицировалась для каждого значения в v2
. Например, для приведенного выше кадра данных результат выглядит следующим образом:
v1 v2
0 a A1
1 b A2
2 b A3
3 c B4
4 d A5
5 d B6
6 d B7
Я смог сделать это с помощью следующего кода:
new_df = pd.DataFrame()
for index, row in df.iterrows():
if len(row["v2"].split(','))>1:
row_base = row
for r in row["v2"].split(','):
row_base["v2"] = r
new_df = new_df.append(row_base, ignore_index=True)
else:
new_df = new_df.append(row)
однако он крайне неэффективен на большом фрейме данных, и я хотел бы узнать, как сделать это более эффективно.