我最近发现了Pandas系列的str
方法,它很棒!但是,如果我想链接操作(例如,一对replace
和strip
),我需要在每次操作后继续调用str
,使其不是最优雅的代码。
例如,假设我的列名称包含空格和句点,我想用下划线替换它们。我可能还想删除任何剩余的下划线。如果我想使用str
方法执行此操作,是否有任何方法可以避免运行:
df.columns.str.replace(' ', '_').str.replace('.', '_').str.strip('_')
谢谢!
答案 0 :(得分:1)
我认为每个str
函数都需要重复.str
,这是每个设计。
但是这里只能使用一个replace
:
df = pd.DataFrame(columns=['aa dd', 'dd.d_', 'd._'])
print (df)
Empty DataFrame
Columns: [aa dd, dd.d_, d._]
Index: []
print (df.columns.str.replace('[\s+.]', '_').str.strip('_'))
Index(['aa_dd', 'dd_d', 'd'], dtype='object')
答案 1 :(得分:1)
为什么不使用列表理解?
import re
df.columns = [re.sub('[\s.]', '_', x).strip('_') for x in df.columns]
在list comp中,您直接使用字符串对象,而无需每次都调用.str
。