我有一个数据框(下面有一个超级简化版),其中包含购买的产品和使用的设备的交易数据:
CUST_ID PRODUCT DEVICE
----------------------
1 A MOBILE
1 B TABLET
2 B LAPTOP
2 A MOBILE
3 C TABLET
3 C TABLET
我想对其进行转换,以便通过单个cust_id视图获得每种产品和设备使用的购买频率:即一个数据框(3x7)
CUST_ID PRODUCT_A PRODUCT_B PRODUCT_C DEVICE_MOBILE DEVICE_LAPTOP DEVICE_TABLET
1 1 1 0 1 0 1
2 1 1 0 1 1 0
3 0 0 2 0 0 2
我尝试使用.pivot_table()函数,但它为我添加了索引和重复的列。这是一个简化的版本,我将需要对许多产品和设备执行此操作,所以也许函数或循环会更有效?
最佳答案
您可以使用pd.get_dummies
和df.groupby
pd.get_dummies(df, columns=['PRODUCT','DEVICE']).groupby(['CUST_ID'], as_index=False).sum()
输出:
CUST_ID PRODUCT_A PRODUCT_B PRODUCT_C DEVICE_LAPTOP DEVICE_MOBILE \
0 1 1 1 0 0 1
1 2 1 1 0 1 1
2 3 0 0 2 0 0
DEVICE_TABLET
0 1
1 0
2 2
关于python - Python Pandas-聚合和计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52854826/