在:

时间:2016-02-11 01:25:41

标签: python pandas

我的列名如下:

1:Arnston 2:Berg 3:Carlson 53:Brown

我希望在:之前删除所有字符。我知道我可以重命名这些列,但由于我的数字达到100,这将非常繁琐。

我想要的出局是:

Arnston Berg Carlson Brown

6 个答案:

答案 0 :(得分:3)

假设你的框架看起来像这样:

>>> df
   1:Arnston  2:Berg  3:Carlson  53:Brown
0          5       0          2         1
1          9       3          2         9
2          9       2          9         7

您可以使用向量化字符串运算符在第一个冒号处拆分每个条目,然后使用第二个部分:

>>> df.columns = df.columns.str.split(":", 1).str[1]
>>> df
   Arnston  Berg  Carlson  Brown
0        5     0        2      1
1        9     3        2      9
2        9     2        9      7

答案 1 :(得分:0)

你可以用列表理解来做到这一点:

columns = '1:Arnston 2:Berg 3:Carlson 53:Brown'.split()
print('Before: {!r}'.format(columns))

columns = [col.split(':')[1] for col in columns]
print('After: {!r}'.format(columns))

<强>输出

Before: ['1:Arnston', '2:Berg', '3:Carlson', '53:Brown']
After: ['Arnston', 'Berg', 'Carlson', 'Brown']

另一种方法是使用re.sub()的正则表达式:

import re

columns = '1:Arnston 2:Berg 3:Carlson 53:Brown'.split()

pattern = re.compile(r'^.+:')
columns = [pattern.sub('', col) for col in columns]
print(columns)

<强>输出

['Arnston', 'Berg', 'Carlson', 'Brown']

答案 2 :(得分:0)

import re
s = '1:Arnston 2:Berg 3:Carlson 53:Brown'
s_minus_numbers = re.sub(r'\d+:', '', s)

得到你

'Arnston Berg Carlson Brown'

答案 3 :(得分:0)

最好的解决方案IMO是使用熊猫&#39;列上的LoginManager.getInstance().loginWithReadPermissions(); LoginManager.getInstance().loginWithPublishPermissions(); 属性。这允许使用正则表达式而无需导入str

re

正则表达式的含义:在一个或多个数字(df.columns.str.extract(r'\d+:(.*)') )和冒号((.*))之后选择所有内容(\d+)。

答案 4 :(得分:0)

df = pd.DataFrame({'1:Arnston':[5,9,9],
  '2:Berg':[0,3,2],
  '3:Carlson':[2,2,9] ,
  '53:Brown':[1,9,7]})

[x.split(':')[1] for x in df.columns.factorize()[1]]

输出:

['Arnston', 'Berg', 'Carlson', 'Brown']

答案 5 :(得分:0)

您可以使用str.replace并传递正则表达式:

In [52]: df
Out[52]:
   1:Arnston    2:Berg  3:Carlson  53:Brown
0   1.340711  1.261500  -0.512704 -0.064384
1   0.462526 -0.358382   0.168122 -0.660446
2  -0.089622  0.656828  -0.838688 -0.046186
3   1.041807  0.775830  -0.436045  0.162221
4  -0.422146  0.775747   0.106112 -0.044917

In [51]: df.columns.str.replace('\d+[:]','')
Out[51]: Index(['Arnston', 'Berg', 'Carlson', 'Brown'], dtype='object')