#python #pandas #dataframe
Вопрос:
Надеюсь, у вас все хорошо. Допустим, у меня есть некоторый фрейм данных df_smth, такой, что:
in [1]: df_smth out [1]: | | Dict_Col | Perm_Col | | -------- |------------- | ------------------------| | 0 | {1:a, 2:b, 3:c}| [[1, 2], [1, 3], [2, 3]]| | 1 | {1:a, 3:c, 2:b}| [[1, 1], [2, 3], [1, 3]]|
И я хочу получить
| | New_Perm_Col | | -------- | ------------------------| | 0 | [[a, b], [a, c], [b, c]]| | 1 | [[a, a], [b, c], [a, c]]|
Спасибо!
Комментарии:
1. Есть ли способ решить эту проблему, не полагаясь на цикл for? Я пытаюсь понять, как решить эту проблему с помощью apply и lambda f-n. Спасибо!
Ответ №1:
Вы можете разбить Perm_Col
столбец на столбец с отдельными списками, использовать apply
для выполнения замены строк, а затем groupby
снова объединиться в списки
df2 = pd.DataFrame( df_smth.explode('Perm_Col') .apply(lambda row: [row.Dict_Col.get(x, x) for x in row.Perm_Col], axis=1) .groupby(lambda x: x) .apply(lambda g: list(g)) .rename('Perm_Col') ) df2 # returns: Perm_Col 0 [[a, b], [a, c], [b, c]] 1 [[a, a], [b, c], [a, c]]
Комментарии:
1. Это потрясающе! Спасибо. Я попытаюсь использовать ваш ответ, чтобы теперь рассчитать нечеткий процент между строками в Perm_Col.