如何用单行代码处理Pandas DataFrame指定列的字符截取与格式转换
问题描述
需要对Pandas DataFrame中的指定4列(共20列)进行格式调整:移除每列字符串末尾的6个字符,并将内容转换为首字母大写格式。目前已掌握单列处理方法,但希望用单行代码完成多列批量处理。
示例数据:
| QA Support | UA Support | Dev Support | Prod Support |
|---|---|---|---|
| Stephen Andrews AB1603 | Scott Barker AB2044 | Edward Boyes AB1548 | David Nesmith AB1996 |
| Ruth Xavier AB1594 | LENA Kelly AB1708 | Angela NEVIN AB1242 | Renee ALLEN AB2162 |
| Ryan Trussell AB3102 | Roland Irons AB1772 | Aaron Nixon AB1249 | George Folkes AB3400 |
当前单列处理代码:
df['QA Support'] = df['QA Support'].str[:-6].str.title() df['UA Support'] = df['UA Support'].str[:-6].str.title() df['Dev Support'] = df['Dev Support'].str[:-6].str.title() df['Prod Support'] = df['Prod Support'].str[:-6].str.title()
解决方案
可以通过以下两种单行方式实现多列批量处理:
直接列子集赋值
df[['QA Support', 'UA Support', 'Dev Support', 'Prod Support']] = df[['QA Support', 'UA Support', 'Dev Support', 'Prod Support']].str[:-6].str.title()
使用loc索引(可读性更强)
如果列名较多,也可通过loc索引完成单行批量处理:
df.loc[:, ['QA Support', 'UA Support', 'Dev Support', 'Prod Support']] = df.loc[:, ['QA Support', 'UA Support', 'Dev Support', 'Prod Support']].str[:-6].str.title()
原理说明
Pandas的str访问器支持对DataFrame的列子集批量调用字符串方法,无需逐列编写重复代码:
str[:-6]截取字符串,移除末尾6个字符str.title()将字符串转换为首字母大写格式
内容的提问来源于stack exchange,提问作者Paul A
相关产品推荐
相关产品推荐

