Pandas -替换/删除指定字符串之后的所有内容

exdqitrt  于 2023-04-04  发布在  其他
关注(0)|答案(3)|浏览(189)

我的数据格式如下:
| 产品名称|
| --------------|
| HP Ryzen 5 Hexa Core 5500 U-(16 GB/512 GB SSD/Windows 11 Home)15 s-eq 2182 AU轻薄笔记本电脑|
| DELL Inspiron Athlon双核3050 U-(8 GB/256 GB SSD/Windows 11 Home)Inspiron 3525笔记本|
这些名称太长,我想缩短它们。所有数据行的一个共同主题是,第一次出现- (之前的所有文本都是我想保留的产品名称。
如何删除- (之后的所有文本,包括- (本身?

qmelpv7a

qmelpv7a1#

pandas的applymap可以做到这一点:

import pandas as pd

def shorten(s):
    return s.split(' - (')[0]
    
df = pd.DataFrame(['abc - (123)', 'def - (456)'])
print(df)
df = df.applymap(shorten)
print(df)

输出:

0
0  abc - (123)
1  def - (456)
     0
0  abc
1  def

如果只想修改特定列,例如“product_name”,请使用apply:

import pandas as pd

def shorten(s):
    return s.split(' - (')[0]
    
df = pd.DataFrame([['abc - (123)'], ['def - (456)']], columns = ['product_name'])
print(df)
df['product_name'] = df['product_name'].apply(shorten)
print(df)
wlzqhblo

wlzqhblo2#

试试这个:string.split(" - (")[0]

omjgkv6w

omjgkv6w3#

假设它是一个pandas dataframe df,类似would使用regex来执行'product_name'下所有项的替换。
df['product_name'] = df['product_name'].str.replace('- \(', '', regex=True)

相关问题