减去基于panda中另一列的字符串时出错



我有两列,我只想保留基于另一列的字符串的第一部分作为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

最新更新