aggfunc для получения произвольного значения в ячейках панды pivot_table - PullRequest
1 голос
/ 15 июня 2019

Я хотел бы использовать pivot_table, чтобы показать произвольное значение столбца в каждой ячейке. Например, с учетом DataFrame, например:

df = pd.DataFrame({'x': ['x1', 'x1', 'x2'],
                   'y': ['a', 'b', 'c']})

Для подсчета значений y для каждого значения x:

df.pivot_table(index='x', values='y', aggfunc=len)
    y
x   
x1  2
x2  1

Так что вместо [2, 1] я бы хотел получить ['a', 'c'] или ['b', 'c'].

Я попробовал эти подходы, но все выдают ошибки ( ноутбук ):

df.pivot_table(index='x', values='y', aggfunc=sample)
df.pivot_table(index='x', values='y', aggfunc=head)
df.pivot_table(index='x', values='y', aggfunc=lambda x: x[0])

Per https://stackoverflow.com/a/38982172/1840471, альтернатива использует groupby и agg, и это дает желаемый результат в этом случае:

df.groupby(['x']).y.agg('head')

Однако я собираюсь использовать pivot_table, потому что мой полный вариант использования включает получение значений в строках и столбцах.

1 Ответ

1 голос
/ 15 июня 2019

Как насчет использования first следующим образом:

df.pivot_table(index='x', values='y', aggfunc='first')

Out[67]:
    y
x
x1  a
x2  c
...