我有一个Pandas的数据框,看起来像这样:
df = pd.DataFrame.from_dict({'type': {4: 'Second Product',
5: 'table',
6: 'First Product',
7: 'chair',
8: 'Second Product',
9: 'desk',
10: 'First Product',
11: 'chair'},
'id': {4: 'cust1',
5: 'cust1',
6: 'cust1',
7: 'cust1',
8: 'cust2',
9: 'cust2',
10: 'cust2',
11: 'cust2'}})
但是我需要将“type”列分解为"value“列。因此,列名将是”Second Product“和”First Product“,但值将位于它们下面的行。如下所示:
df = pd.DataFrame.from_dict({'cust': {4:'cust1', 5:'cust2' },'Second Product': {4: 'table',
5: 'desk'},
'First Product': {4: 'chair',
5: 'chair'}})
另一个问题是,可能不止有第一个和第二个产品,我希望获得所有列,并在不存在的地方填充空白或nans。因此,如果有一个客户有“第三个产品”,我需要将其作为一个列,在其他客户没有第三个产品值的地方,将其填充为空白或nans。
我试过转置,堆叠,拆堆和设置索引等...我只是坚持如何去做这件事。
编辑:我并不担心索引被重置,所以它不需要与我的示例完全匹配。
3条答案
按热度按时间gudnpqoy1#
代码
结果
inkz8wg92#
您可以尝试使用移位来连接 Dataframe ,并透视结果:
它给出:
at0kjp5o3#
使用
zip
和list comprehension,您可以执行以下操作:[ view stages and output ]