删除一系列标题中的字符串

时间:2018-11-14 20:35:06

标签: python python-3.x pandas dataframe

我在数据框中有许多列:

df = pd.DataFrame({'Date':[1990],'State Income of Alabama':[1], 
                   'State Income of Washington':[2],
                   'State Income of Arizona':[3]})

所有标头具有相同数目的字符串,并且所有标头具有完全相同的字符串,且州名之间只有一个空格。

我想取出字符串'State Income of',并将状态保留为该集合的新标题,以便它们全部读为:

Alabama  Washington  Arizona
1        2           3

我尝试过在Python中使用替换列函数,例如:

df.columns = df.columns.str.replace('State Income of ', '')

但这不能给我想要的输出。

3 个答案:

答案 0 :(得分:3)

这是另一种解决方案,不到位:

df.rename(columns=lambda x: x.split()[-1])

或就位:

df.rename(columns=lambda x: x.split()[-1], inplace = True)

答案 1 :(得分:2)

您的方式对我有用,但还有其他选择:

一种方法是拆分列名并使用最后一个单词:

    q.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
    q.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;
    q.y = q1w * q2y + q1y * q2w - q1x * q2z + q1z * q2x;
    q.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;

答案 2 :(得分:0)

您可以为此使用re模块:

>>> import pandas as pd
>>> df = pd.DataFrame({'State Income of Alabama':[1], 
...                    'State Income of Washington':[2],
...                    'State Income of Arizona':[3]})
>>> 
>>> import re
>>> df.columns = [re.sub('State Income of ', '', col) for col in df]
>>> df
   Alabama  Washington  Arizona
0        1           2        3

re.sub('State Income of', '', col)将用字符串col中的空字符串(有效地为“ nothing”)替换任何出现的“ State Income of”。