首页 > 解决方案 > 熊猫系列:删除某个字符之前的所有内容,如果“所有内容”每次都更改

问题描述

我知道这样的问题已经被大量提出,但我还没有找到一个可以回答我的问题(也许我监督了某事,但我尽了最大努力;))。这就是问题所在:我有一个这样的熊猫系列:

ingredssplit
    0                          MAGERMILCH 65%
    1                                  Wasser
    2            Keks gemahlen 6% (WEIZENMEHL
    3                   Traubensaftkonzentrat
    4                                 Palmöl)
    5                                  Stärke
    6                              Maiskeimöl
    7                                  Zucker
    8     Antioxidationsmittel Ascorbinsäure¹
    9                  Thiamin (Vitamin B1). 
    dtype: object``

现在我想删除括号前第 2 行中的所有内容。但这部分每次都在变化,有时是“Keks gemahlen 6%”,有时是完全不同的。在“(”之前的第 2 行中唯一不变的是“%”。所以另一种可能性是“abc de% (”。我怎样才能删除那部分?我的研究把我带到了正则表达式运算符并继续,到这一行:

for line in ingredssplit:
print(re.sub())

但是现在我不知道如何正确填写代码括号,所以所有内容都在“(Weizenmehl”之前命名。也许还有另一种方式?另外,我如何删除“Ascorbinsäure”处的上标1?谢谢大家,有一个好我们!

标签: pythonpandas

解决方案


尝试str.extract

df.loc[[2], 'ingredssplit'] = (
    df.loc[[2], 'ingredssplit'].str.extract('.*\((.*)')[0]
)

推荐阅读