python - 如何将字符串方法应用于数据框的多列
问题描述
我有一个包含多个字符串列的数据框。我想使用对数据框多列上的系列有效的字符串方法。这样的事情是我想要的:
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
使用so 的功能Series
可以使用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()
推荐阅读
- javascript - 如何在没有 babel 的 Windows 10 cmd 窗口中运行 ES6 semicolumnless 代码?
- c# - UI 图像选择器混淆
- amazon-web-services - AWS Honeycode:#value!在过滤列上使用 sum() 时出错
- arrays - 将 FileInputStream 转换为数组 [字节] Scala
- c++11 - 为什么调用移动赋值
- python-3.x - 如何通过与其类型不匹配的主键搜索 Django 模型而不引发错误?
- apache-spark-2.3 - 当左侧数据较大(~1B 记录)且具有幂律且右侧数据较小(但 > 2GB)时,我是否应该启用 shufflehashjoin
- git - 詹金斯管道 - 是否可以同时签出分支或标签
- laravel - Laravel 7-Carbon 以 UTC 的形式返回
- r - 如何提取每个日期时间戳的频率