我使用的软件生成由卖家出售的物品的csv报告,但其结构存在问题,如下面的示例所示:
| 产品|数量|单元$|总$|
| --|--|--|--|
| 1 -约翰||||
| 12551 | 1 |五点|五点|
| 14445 | 2 |四点|八点|
| 2 -千斤顶||||
| 1200 | 5 |两点|十点|
| 00155 | 4 |三点|十二点|
我想导入csv并创建一个新的列与卖方信息,但我不知道如何读取文件,存储卖方信息在第二行,通过'卖方'列,并分配'1 -约翰',直到卖方名称更改为'2 -杰克'。
我希望生成以下dataframe:
| 产品|数量|单元$|总$|卖方|
| --|--|--|--|--|
| 12551 | 1 |五点|五点|1 -约翰|
| 14445 | 2 |四点|八点|1 -约翰|
| 1200 | 5 |两点|十点|2 -千斤顶|
| 00155 | 4 |三点|十二点|2 -千斤顶|
我将非常感激你能给予我的任何帮助。
2条答案
按热度按时间ncgqoxb01#
假设你在使用
pd.read_csv
后得到了第一个DataFrame,试着:1.由于其他列对于卖方总是
NaN
,因此可以使用此列获得卖方名称的Seriesffill
创建“卖方”列drop
行,其中数量为NaN
vxf3dgd42#
您可以尝试如下操作:
Series.str.contains
为所有“Sellers”创建一个布尔掩码(m
)(True)(有关解释,请参阅here)。Series.where
和m
作为输入和前向填充(使用Series.ffill
)。使用df.assign
将其添加到df
中,作为“Seller”列。[~m]
(一元运算符~
反转布尔值)从df
中仅选择m == False
的行,并重置索引(df.reset_index
)。验证码
如果您确定其他列中的一列将 * 始终 * 包含
NaN
值,则可以更轻松地执行此操作。请参阅@not_speshal的answer。但是,对于一个从一开始就有明显缺陷的csv文件,您可能希望安全起见。使用的设置