Pandas:使用逗号分隔的字符串聚合进行透视?

Pandas: Pivot with comma separated string aggregation?

我如何在此处使用逗号分隔的字符串聚合作为数据透视表 table?

考虑这个小例子:

# mwe
df = pd.DataFrame({'property': ['DriveProductRevision', 'DriveProductRevision', 'DriveProductId', 'ProductNumber'],
                   'value': ['CXV84M1Q', 'CXV84M1Z', 'Samsung', 0]})

我的尝试:

df.pivot_table(columns='property', values='value', aggfunc=lambda x: ', '.join(x))

预期输出:

DriveProductRevision    DriveProductId  ProductNumber
CXV84M1Q, CXV84M1Z         Samsung            0

我实际上是 groupby + agg(list) + .str.join:

df = df.assign(value=df['value'].astype(str)).groupby('property')['value'].agg(list).str.join(', ').to_frame().T.rename_axis(None, axis=1).reset_index(drop=True)

输出:

>>> df
  DriveProductId DriveProductRevision ProductNumber
0        Samsung   CXV84M1Q, CXV84M1Z             0

您可以调整传递给 aggfunc 的 lambda:

out = (df.pivot_table(columns='property', values='value', 
                      aggfunc=lambda x: x if len(x)==1 else ', '.join(x))
       .rename_axis(columns=[None]))

输出:

      DriveProductId DriveProductRevision ProductNumber
value        Samsung   CXV84M1Q, CXV84M1Z             0