столбец данных str заменить на список - PullRequest
0 голосов
/ 10 мая 2018
>>> df1
  % score  (C)  D; start name
0     one    0   0        foo
1     one    1   2        bar
2     two    2   4        foo
3   three    3   6        bar
4     two    4   8        foo
5     two    5  10        bar
6     one    6  12        foo
7   three    7  14        foo
>>> char1 = ["\s+" , "(" , ")" , "%" , ";"]
>>> char2 = ["_" , "" , "", "percent" , ""]

У меня есть датафрейм, как указано выше. Я хочу переименовать имя столбца, заменив специальный символ, указанный в char1, на char2. то есть char1 [0] должен быть заменен на char [2]. Я предпочитаю использовать df.columns.str.replace. как это можно сделать питонским способом?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Начните с экранирования строк в char1. Затем создайте отображение char1char2 и передайте его pd.Series.replace в столбцах.

import re

char1 = [r"\s+" , r"(" , r")" , r"%" , r";"]
char2 = ["_" , "" , "", "percent" , ""]

mapping = dict(zip((re.escape(c) if '\\' not in c else c for c in char1), char2))
# this next step is similar to MaxU's solution
df.columns = df.columns.to_series().replace(mapping, regex=True)

df

  percent_score  C   D start_name
0           one  0   0        foo
1           one  1   2        bar
2           two  2   4        foo
3         three  3   6        bar
4           two  4   8        foo
5           two  5  10        bar
6           one  6  12        foo
7         three  7  14        foo
0 голосов
/ 10 мая 2018
In [23]: char1 = [r"\s+" , r"\(" , r"\)", r"%" , r";"]

In [24]: df.columns = df.columns.to_series().replace(char1, char2, regex=True).tolist()

In [25]: df
Out[25]:
  percent_score  C   D start_name
0           one  0   0        foo
1           one  1   2        bar
2           two  2   4        foo
3         three  3   6        bar
4           two  4   8        foo
5           two  5  10        bar
6           one  6  12        foo
7         three  7  14        foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...