删除所有列名称中的前缀

时间:2019-04-24 12:36:38

标签: python pandas

我想从数据框中的所有列名称中删除前缀。

我尝试创建udf并在for循环中调用

def remove_prefix(str, prefix):
    if str.startswith(blabla):
        return str[len(prefix):]
    return str

for x in df.columns:
    x.remove_prefix()

5 个答案:

答案 0 :(得分:3)

您可以使用str.lstrip从列名中删除前缀,这样可以避免循环和检查其中是否包含前缀:

# Example dataframe
df = pd.DataFrame(columns=['pre_A', 'pre_B', 'C'])
df.columns = df.columns.str.lstrip('pre_')

结果:

print(df.columns)
# Index(['A', 'B', 'C'], dtype='object')

注意:这还将删除pre_之前出现的另一个事件,即所有左侧连续出现的事件。

答案 1 :(得分:2)

replace中使用list-comprehension

df.columns = [i.replace(prefix,"") for i in df.columns]

答案 2 :(得分:1)

使用Series.str.replace与正则表达式TASK [copy : set_fact] ******************************************************************************************************************************************************************************************************************************************************************************************************* skipping: [localhost] => (item={u'version': u'1.1', u'name': u'ace-editor'}) ok: [localhost] => (item={u'version': u'1.95', u'name': u'analysis-core'}) skipping: [localhost] => (item={u'version': u'1.9', u'name': u'ant'}) skipping: [localhost] => (item={u'version': u'1.5', u'name': u'antisamy-markup-formatter'}) skipping: [localhost] => (item={u'version': u'4.5.5-3.0', u'name': u'apache-httpcomponents-client-4-api'}) TASK [copy : debug] ********************************************************************************************************************************************************************************************************************************************************************************************************** ok: [localhost] => { "analysis-core-version": "VARIABLE IS NOT DEFINED!" } 来匹配字符串的开头:

^

另一种解决方案是将列表理解与df = pd.DataFrame(columns=['pre_A', 'pre_B', 'pre_predmet']) df.columns = df.columns.str.replace('^pre_', '') print (df) Empty DataFrame Columns: [A, B, predmet] Index: [] 一起使用:

re.sub

答案 3 :(得分:0)

您可以使用header=None来读取没有标题的文件:

pandas.read_csv(filepath_or_buffer=filename, header=None, sep=',')  

答案 4 :(得分:0)

使用rename方法,该方法接受用于列名称的功能


def remove_prefix(prefix):
    return lambda x: x[len(prefix):]

frame = pd.DataFrame(dict(x_a=[1,2,3], x_b=[4,5,6]))  
frame = frame.rename(remove_prefix('x_'), axis='columns')