我尝试删除位于部分df列名末尾的子字符串_x。
示例df代码:
import pandas as pd
d = {'W_x': ['abcde','abcde','abcde']}
df = pd.DataFrame(data=d)
df['First_x']=[0,0,0]
df['Last_x']=[1,2,3]
df['Slice']=['abFC=0.01#%sdadf','12fdak*4%FC=-0.035faf,dd43','FC=0.5fasff']
输出:
W_x First_x Last_x Slice
0 abcde 0 1 abFC=0.01
1 abcde 0 2 12fdak*4%FC=-0.035faf,dd43
2 abcde 0 3 FC=0.5fasff
所需输出:
W First Last Slice
0 abcde 0 1 abFC=0.01
1 abcde 0 2 12fdak*4%FC=-0.035faf,dd43
2 abcde 0 3 FC=0.5fasff
发布于 2019-10-10 12:02:30
我通常使用@cs95方法,但为了方便起见,我将其包装在数据框方法中:
import pandas as pd
def drop_prefix(self, prefix):
self.columns = self.columns.str.lstrip(prefix)
return self
pd.core.frame.DataFrame.drop_prefix = drop_prefix
然后,您可以像在pandas add_prefix
中已经实现的逆向方法一样使用它。
pd.drop_prefix('myprefix_')
发布于 2019-04-14 19:53:00
df.columns = [col[:-2] for col in df.columns if col[-2:]=='_x' else col]
或
df.columns = [col.replace('_x', '') for col in df.columns]
发布于 2019-04-14 20:02:12
我建议使用rename
函数:
df.rename(columns = lambda x: x.strip('_x'))
输出结果与预期一致
你也可以关注FabienP的评论,并根据Quang Hoang的解决方案进行修改:
df.rename(columns = lambda x: x.replace('_x$', ''))
给出所需的输出。
另一种解决方案很简单:
df.rename(columns = lambda x: x[:-2] if x.endswith('_x') else x)
https://stackoverflow.com/questions/55679401
复制