Поворот кадра данных Pandas со строками в качестве значений, где в желаемом выводе все столбцы заполнены ⇐ Python
Поворот кадра данных Pandas со строками в качестве значений, где в желаемом выводе все столбцы заполнены
У меня есть кадр данных формы
значение атрибута имени item_id 1 Имя1 куратор "Аарон" 1 Имя1 описание «Некоторое описание 1» 2 Имя2 куратор "Ббойд" 2 Имя2 куратор "Бийд" 2 Имя2 описание «Некоторое описание 2» и т. д. Я хочу повернуть этот фрейм данных после столбца attribute, объединив несколько значений для одного и того же атрибута, чтобы получить:
item_id имя куратора описание 1 Имя1 «Аарон» «Некоторое описание 1» 2 Имя2 «Ббойд//Бийд» «Некоторое описание 2» и т. д. Я бы предпочел решение, которое работает, если уникальные значения, заполняющие столбец attribute, неизвестны, поскольку эти значения могут со временем меняться в моем приложении - например, новый атрибут price< /code> может появиться.
Как было предложено в соответствующем вопросе, где решение отличается от того, что я хочу, я попробовал использовать обе pivot_table следующим образом:
df = df.pivot_table(index=['item_id', 'name'], столбцы = 'атрибут', значения = 'значение', aggfunc=lambda x: '///'.join().to_list())) , и, как подсказано в ответах, я тоже попробовал
df = df.groupby(['item_id', 'name' 'attribute'])['value'].aggregate( лямбда х: х ).unstack().reset_index() Ни одно из этих решений не решает мою проблему, потому что с обоими я получаю:
item_id имя куратора описание 1 Имя1 «Аарон» NaN 1 Имя1 NaN «Некоторое описание 1» 2 Имя2 «Ббойд» NaN 2 Имя2 «Бийд» НЭН 2 Имя2 NaN «Некоторое описание 2» и т. д. Глядя на второе решение, мне становится ясно, почему это происходит: потому что мы группируем по атрибуту. Во-первых, не очень понятно, что pivot_table делает с aggfunc — не совсем понятно, к чему она применяется к — так что, возможно, я мог бы получить желаемый результат с помощью другого aggfunc? В любом случае, какое решение вы предлагаете? Было бы так же хорошо, если бы я мог каким-то образом преобразовать полученную таблицу из pivot_table/groupby в нужную мне форму, но, честно говоря, я не понимаю, как это сделать, по крайней мере не со стандартными функциями панд.
У меня есть кадр данных формы
значение атрибута имени item_id 1 Имя1 куратор "Аарон" 1 Имя1 описание «Некоторое описание 1» 2 Имя2 куратор "Ббойд" 2 Имя2 куратор "Бийд" 2 Имя2 описание «Некоторое описание 2» и т. д. Я хочу повернуть этот фрейм данных после столбца attribute, объединив несколько значений для одного и того же атрибута, чтобы получить:
item_id имя куратора описание 1 Имя1 «Аарон» «Некоторое описание 1» 2 Имя2 «Ббойд//Бийд» «Некоторое описание 2» и т. д. Я бы предпочел решение, которое работает, если уникальные значения, заполняющие столбец attribute, неизвестны, поскольку эти значения могут со временем меняться в моем приложении - например, новый атрибут price< /code> может появиться.
Как было предложено в соответствующем вопросе, где решение отличается от того, что я хочу, я попробовал использовать обе pivot_table следующим образом:
df = df.pivot_table(index=['item_id', 'name'], столбцы = 'атрибут', значения = 'значение', aggfunc=lambda x: '///'.join().to_list())) , и, как подсказано в ответах, я тоже попробовал
df = df.groupby(['item_id', 'name' 'attribute'])['value'].aggregate( лямбда х: х ).unstack().reset_index() Ни одно из этих решений не решает мою проблему, потому что с обоими я получаю:
item_id имя куратора описание 1 Имя1 «Аарон» NaN 1 Имя1 NaN «Некоторое описание 1» 2 Имя2 «Ббойд» NaN 2 Имя2 «Бийд» НЭН 2 Имя2 NaN «Некоторое описание 2» и т. д. Глядя на второе решение, мне становится ясно, почему это происходит: потому что мы группируем по атрибуту. Во-первых, не очень понятно, что pivot_table делает с aggfunc — не совсем понятно, к чему она применяется к — так что, возможно, я мог бы получить желаемый результат с помощью другого aggfunc? В любом случае, какое решение вы предлагаете? Было бы так же хорошо, если бы я мог каким-то образом преобразовать полученную таблицу из pivot_table/groupby в нужную мне форму, но, честно говоря, я не понимаю, как это сделать, по крайней мере не со стандартными функциями панд.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение