我有两列,我只想保留基于另一列的字符串的第一部分作为delimeter。
示例:我想删除颜色,所以我需要从我的";产品名称";在";存储";柱
我使用此代码时遇到错误:
import pandas as pd
aux = [['iphone 64gb white','64gb'],['samsung 128gb blue','128gb']]
df = pd.DataFrame (aux, columns = ['product_name', 'storage'])
df['product_name'] = df['product_name'].str.split(df['storage']).str[0]
类型错误:不可更改的类型:"系列">
如果要使用多个列,也许可以尝试使用apply()
。我提出的解决方案:
df['product_name'] = df.apply(lambda x: x['product_name'].split(x['storage'])[0],axis=1)
输出:
product_name storage
0 iphone 64gb
1 samsung 128gb
有效去除颜色,并在应用基于storage
列项目的split()
作为分隔符后保留列表的第一个元素。
我会使用元组逐行迭代。
df.assign(
product_split=
[pn.split(s, 1)[0].rstrip()
for pn, s in zip(df['product_name'], df['storage'])]
)
product_name storage product_split
0 iphone 64gb white 64gb iphone
1 samsung 128gb blue 128gb samsung
如果你想把这个东西分配回同一列,请继续执行:
df['product_name'] = [
pn.split(s, 1)[0].rstrip()
for pn, s in zip(df['product_name'], df['storage'])
]
df
product_name storage
0 iphone 64gb
1 samsung 128gb