在Pandas Series

时间:2017-11-16 15:43:34

标签: python pandas

我最近发现了Pandas系列的str方法,它很棒!但是,如果我想链接操作(例如,一对replacestrip),我需要在每次操作后继续调用str,使其不是最优雅的代码。

例如,假设我的列名称包含空格和句点,我想用下划线替换它们。我可能还想删除任何剩余的下划线。如果我想使用str方法执行此操作,是否有任何方法可以避免运行:

df.columns.str.replace(' ', '_').str.replace('.', '_').str.strip('_')

谢谢!

2 个答案:

答案 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