python - Python中多列的棘手字符串分离
问题描述
我有一个数据集 df,我想在其中分隔 Python 中的字符串。
数据
Type Id
aa - generation aa - generation01
aa_led - generation aa_led - generation01
ss - generation ss- generation01
期望的
Type Id
aa aa01
aa_led aa_led01
ss ss01
正在做
我正在尝试将此代码合并到我的脚本中,但是,我不断收到 NoneType 错误
df = df.applymap(lambda x : x.replace('- generation', '').replace(' ',''))
任何建议表示赞赏谢谢
解决方案
在 之前使用DataFrame.replace
with\s*
表示零个或多个空格- generation
:
df = df.replace('\s*- generation', '', regex=True)
print (df)
Type Id
0 aa aa01
1 aa_led aa_led01
2 ss ss01
错误意味着存在一些None
值,因此对于您的解决方案,可以使用if-else
以下语句:
df = pd.DataFrame([[ "aa - generation", "aa - generation01"],
["aa_led - generation", "aa_led - generation01"],
["ss - generation", None ]],
columns=['Type', 'Id'])
print(df)
Type Id
0 aa - generation aa - generation01
1 aa_led - generation aa_led - generation01
2 ss - generation None
func = lambda x : x.replace('- generation', '').replace(' ','') if pd.notna(x) else None
df = df.applymap(func)
print (df)
Type Id
0 aa aa01
1 aa_led aa_led01
2 ss None