#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных, подобный этому
feature feature1
[1,2,3] 0
[4,5,6] 0
0 [6,7,8]
0 [7,8,9]
Я хочу преобразовать этот фрейм данных следующим образом,
feature
[1,2,3]
[4,5,6]
[6,7,8]
[7,8,9]
Чтобы быть точным, посмотрите на прикрепленный скриншот
Я попытался поменять столбцы местами, но не выдал правильного результата. Пожалуйста, предложите.
Комментарии:
1. скриншот и пример не совпадают, будет лучше, если вы разместите 5 строк как
df.head(5).to_dict()
2. Да, я хотел опубликовать только с помощью df.head(), но в каждом массиве всего 420 элементов, и это будет невозможно. @anky
Ответ №1:
Давайте попробуем where
с bfill
df.where(df.ne(0)).bfill(1)['feature']
Комментарии:
1. Ошибка значения: значение истинности массива с более чем одним элементом неоднозначно. Используйте.any() или.all() — Я пытался, но получаю эту ошибку.
Ответ №2:
Попробуйте с
df['New_feature'] = df.feature.mask(df.feature.eq('0'),df.feature1)
Комментарии:
1. Я пробовал с вашим решением, но оно не дает необходимого решения, с помощью print(data.New_feature) он просто печатает элементы ‘feature’ первого столбца.
2. @AdityaParikh df.feature=df.feature.astype(объект), затем выполните описанное выше