Python pandas:删除字符串中分隔符后的所有内容

时间:2016-11-20 14:55:00

标签: python python-3.x pandas

我的数据框包含例如:

"vendor a::ProductA"
"vendor b::ProductA
"vendor a::Productb"

我需要删除所有(包括)两个::所以我最终得到:

"vendor a"
"vendor b"
"vendor a"

我尝试过str.trim(似乎不存在)和str.split但没有成功。 最简单的方法是什么?

4 个答案:

答案 0 :(得分:31)

您可以像使用<Modal transparent={true} visible={this.state.isVisible} onRequestClose={this.closeModal}> <View style={{ flex: 1, flexDirection: 'column', justifyContent: 'center', alignItems: 'center'}}> <View style={{ width: 300, height: 300}}> ... </View> </View> </Modal> 一样使用pandas.Series.str.split。只需拆分字符串split,然后索引从'::'方法创建的列表:

split

这是一只非熊猫的解决方案:

>>> df = pd.DataFrame({'text': ["vendor a::ProductA", "vendor b::ProductA", "vendor a::Productb"]})
>>> df
                 text
0  vendor a::ProductA
1  vendor b::ProductA
2  vendor a::Productb
>>> df['text_new'] = df['text'].str.split('::').str[0]
>>> df
                 text  text_new
0  vendor a::ProductA  vendor a
1  vendor b::ProductA  vendor b
2  vendor a::Productb  vendor a

编辑:以下是>>> df['text_new1'] = [x.split('::')[0] for x in df['text']] >>> df text text_new text_new1 0 vendor a::ProductA vendor a vendor a 1 vendor b::ProductA vendor b vendor b 2 vendor a::Productb vendor a vendor a 上面发生的事情的逐步解释:

pandas

我建议您查看pandas.Series.str docs,或者更好的是Working with Text Data in pandas

答案 1 :(得分:1)

您可以使用str.replace(":", " ")删除"::"。 要进行拆分,您需要指定要拆分的角色:str.split(" ")

trim函数在python中称为strip:str.strip()

此外,您可以str[:7]在字符串中获得"vendor x"

祝你好运

答案 2 :(得分:1)

如果它在数据框(具有名称:dataframe)的特定列(具有名称:列)中,则也可以使用

dataframe.column.str.replace("(::).*","")

它为您提供以下结果

         column        new_column       
0  vendor a::ProductA  vendor a
1  vendor b::ProductA  vendor b
2  vendor a::Productb  vendor a

通过使用此选项,您无需指定任何位置,因为它会删除' :: '

之后的所有内容

我想这可能会过来哦,好运!

答案 3 :(得分:-3)

有你的功能:

def do_it(str):
  integer=0
  while integer<len(str):
      if str[integer]==':' :
        if str[integer+1]==':' :
          str=str.split(':')[0]
          break;
      integer=integer+1    
  return (str)

传递原始字符串。并获得新修剪的字符串。