我的数据框包含例如:
"vendor a::ProductA"
"vendor b::ProductA
"vendor a::Productb"
我需要删除所有(包括)两个::所以我最终得到:
"vendor a"
"vendor b"
"vendor a"
我尝试过str.trim(似乎不存在)和str.split但没有成功。 最简单的方法是什么?
答案 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)
传递原始字符串。并获得新修剪的字符串。