首页 > 解决方案 > 如何将字符串方法应用于数据框的多列

问题描述

我有一个包含多个字符串列的数据框。我想使用对数据框多列上的系列有效的字符串方法。这样的事情是我想要的:

df = pd.DataFrame({'A': ['123f', '456f'], 'B': ['789f', '901f']})
df

Out[15]: 
      A     B
0  123f  789f
1  456f  901f

df = df.str.rstrip('f')
df
Out[16]: 
     A    B
0  123  789
1  456  901

显然,这不起作用,因为 str 操作仅对 pandas Series 对象有效。什么是合适的/最适合熊猫的方法来做到这一点?

标签: pythonstringpandas

解决方案


rstrip使用so 的功能Series可以使用apply

df = df.apply(lambda x: x.str.rstrip('f'))

或最后创建Seriesstackunstack

df = df.stack().str.rstrip('f').unstack()

或使用applymap

df = df.applymap(lambda x: x.rstrip('f'))

最后,如果需要将函数应用于某些列:

#add columns to lists
cols = ['A']
df[cols] = df[cols].apply(lambda x: x.str.rstrip('f'))
df[cols] = df[cols].stack().str.rstrip('f').unstack()
df[cols] = df[cols].stack().str.rstrip('f').unstack()

推荐阅读