Groupby无数值

2024-03-29 07:44:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,有4列:CustomerID,product code,MonthNumber,Units purchased。我可以为同一个客户提供多于同一个月号码的产品。 我需要像图中那样获得一个以MonthNumber为列的表,并在单元格中获得一个由#of units+Product code组成的字符串。 有什么建议吗? Example


Tags: of数据字符串客户产品codeproduct建议
1条回答
网友
1楼 · 发布于 2024-03-29 07:44:06

这是通过collections.defaultdict的一种方法

from collections import defaultdict

df = pd.DataFrame({'ECM ID': [3448, 3448, 3448, 3448],
                   'Mnt': [1, 6, 3, 5],
                   'Code': ['FUP', 'FUP', 'OSO', 'PRD'],
                   'N': [1, 2, 2, 1]})

df['Code'] = df['N'].astype(str) + '-' + df['Code']

d  = defaultdict(lambda: defaultdict(str))

for idx, row in df.iterrows():
    d[row['ECM ID']][row['Mnt']] = row['Code']

res = pd.DataFrame.from_dict(d, orient='index')

for col in (set(range(res.columns.min(), res.columns.max())) - set(res.columns)):
    res[col] = ''

res = res.sort_index(axis=1)

#           1 2      3 4      5      6
# 3448  1-FUP    2-OSO    1-PRD  2-FUP

相关问题 更多 >