从数据框列名中删除后缀 - Python

Sta*_*cks 4 python-3.x pandas

我正在尝试从数据框中的所有列中删除后缀,但是我收到错误消息。任何建议,将不胜感激。

df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
df.add_suffix('_x')

def strip_right(df.columns, _x):
    if not text.endswith("_x"):
        return text
    # else
    return text[:len(df.columns)-len("_x")]
Run Code Online (Sandbox Code Playgroud)

错误:

def strip_right(tmp, "_x"):
                            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我也试过删除引号。

def strip_right(df.columns, _x):
    if not text.endswith(_x):
        return text
    # else
    return text[:len(df.columns)-len(_x)]
Run Code Online (Sandbox Code Playgroud)

错误:

def strip_right(df.columns, _x):
                      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

小智 7

这是一个更具体的例子:。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
df = df.add_suffix('_x')

print ("With Suffix")
print(df.head())

def strip_right(df, suffix='_x'):
    df.columns = df.columns.str.rstrip(suffix)

strip_right(df) 

print ("\n\nWithout Suffix")
print(df.head())
Run Code Online (Sandbox Code Playgroud)

输出:

With Suffix
   A_x  B_x  C_x  D_x
0    0    7    0    2
1    5    1    8    5
2    6    2    0    1
3    6    6    5    6
4    8    6    5    8


Without Suffix
   A  B  C  D
0  0  7  0  2
1  5  1  8  5
2  6  2  0  1
3  6  6  5  6
4  8  6  5  8
Run Code Online (Sandbox Code Playgroud)