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
我如何在此处使用逗号分隔的字符串聚合作为数据透视表 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