我有一个excel文件,我已经将python作为数据框读入,如图所示。
Store List
Ralphs bag1
apple
pear
Ralphs bag2
toilet paper
Albertsons bag3
magazines
paper
我正在尝试将第二列扩展为两列,如图所示。
Bag Item
bag1 Apple
bag1 Pear
bag2 Toilet Paper
bag3 Magazines
bag3 paper
只要原始表中列出了某个项目,商店列就会包含Na。是否有一些熊猫功能具有基于Na的独立功能?或者用所有袋子制作系列并将其作为切割点使用会更容易吗?
答案 0 :(得分:1)
<强>设置强>
df
Store List
0 Ralphs bag1
1 Ralphs apple
2 Ralphs pear
3 Ralphs bag2
4 Ralphs toilet paper
5 Albertsons bag3
6 Albertsons magazines
7 Albertsons paper
您可以将df.where
与str.contains
一起使用,提取以bag
开头的所有行,然后过滤掉虚假行。
df = df.assign(Bag=df.List.\
where(df.List.str.contains('bag')).ffill()).drop('Store', 1)
df[df.List != df.Bag]
List Bag
1 apple bag1
2 pear bag1
4 toilet paper bag2
6 magazines bag3
7 paper bag3
答案 1 :(得分:0)
您可以添加一个列,该列分配给每个项目的行包然后按Sit amet lorem ipsum
Lorem turpis ipsum, sit amet
分组,如下所示:
bag id
或,而不是df['bag'] = "bag"+df.List.str.contains('bag').cumsum().astype(str)
df[['bag','List']].groupby('bag').apply(lambda x: x[1:]).reset_index(drop=True)
,过滤掉groupby
(df.List == df.bag
,bag1 == bag1
..)
bag2 == bag2
总体执行
df['bag'] = "bag"+df.List.str.contains('bag').cumsum().astype(str)
df[df.List != df.bag].drop('Store', axis=1)