我有一个csv,其中包含如下产品数据:
Item,Val1,Val2,Val3,Val4,Val5
SomeProductName1,,,,,
SomeProductDetails1,,,,,
ProductGroupHeader1,,,,,
ProductInfo1,39,8,6,94,112
ProductInfo2,32,7,4,94,112
ProductGroupHeader2,,,,,
ProductInfo3,39,8,6,94,112
ProductInfo4,32,7,4,94,112
SomeProductName2,,,,,
SomeProductDetails2,,,,,
ProductGroupHeader21,,,,,
ProductInfo21,39,8,6,94,112
ProductInfo22,32,7,4,94,112
ProductGroupHeader2,,,,,
ProductInfo23,39,8,6,94,112
ProductInfo24,32,7,4,94,112
我需要它,因为:
Item,Val1,Val2,Val3,Val4,Val5
SomeProductName1, SomeProductDetails1, ProductGroupHeader1,,,,,
SomeProductName1, SomeProductDetails1, ProductInfo1,39,8,6,94,112
SomeProductName1, SomeProductDetails1, ProductInfo2,32,7,4,94,112
SomeProductName1, SomeProductDetails1, ProductGroupHeader2,,,,,
SomeProductName1, SomeProductDetails1, ProductInfo3,39,8,6,94,112
SomeProductName1, SomeProductDetails1, ProductInfo4,32,7,4,94,112
SomeProductName2, SomeProductDetails2, ProductGroupHeader21,,,,,
SomeProductName2, SomeProductDetails2, ProductInfo21,39,8,6,94,112
SomeProductName2, SomeProductDetails2, ProductInfo22,32,7,4,94,112
SomeProductName2, SomeProductDetails2, ProductGroupHeader2,,,,,
SomeProductName2, SomeProductDetails2, ProductInfo23,39,8,6,94,112
SomeProductName2, SomeProductDetails2, ProductInfo24,32,7,4,94,112
本质上,我想从它们各自的行中获取SomeProductName
和SomeProductDetails
,删除这些行,然后在ProductInfo
行中添加两列值
csv有几千行,我最初的想法是根据需要循环更新和删除行
然后,我打算基于ProductName
和可能加上ProductDetails
来透视数据
我不熟悉熊猫和Python,只是想知道是否有更简单/更有效的方法
为了满足您的预期输出,您可以使用掩码来实现,其中所有值都是nan,带有
filter
和isna
。假设结构严格,可以使用shift
查找名称和详细信息行。然后concat
使用where
和ffill
创建的名称和详细信息列来df,并仅选择所需的行你得到了什么
编辑,要将groupheader添加为列,可以创建一个类似的掩码,然后在concat中以相同的方式使用它:
相关问题 更多 >
编程相关推荐