我有一个包含多个字符串列的数据框.我想使用一个对数据帧的多个列上的系列有效的字符串方法.这样的事情是我希望的:
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对象有效.这样做的适当/最大熊猫方法是什么?
最佳答案 功能
rstrip
与系列配合使用可以使用
apply
:
df = df.apply(lambda x: x.str.rstrip('f'))
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()