내 데이터 프레임에 다음과 같은 열이 있습니다.
range
"(2,30)"
"(50,290)"
"(400,1000)"
...
,
쉼표를 -
대시 로 바꾸고 싶습니다 . 현재이 방법을 사용하고 있지만 아무것도 변경되지 않았습니다.
org_info_exc['range'].replace(',', '-', inplace=True)
아무도 도울 수 있습니까?
답변
In [30]:
df['range'] = df['range'].str.replace(',','-')
df
Out[30]:
range
0 (2-30)
1 (50-290)
편집하다
따라서 시도한 내용과 작동하지 않는 이유를 살펴보면 :
df['range'].replace(',','-',inplace=True)
로부터 문서 우리는이 제품 설명을 참조하십시오
str 또는 regex : str : to_replace와 정확히 일치하는 문자열은 값으로 대체됩니다.
따라서 str 값이 일치하지 않기 때문에 대체가 발생하지 않으므로 다음과 비교하십시오.
In [43]:
df = pd.DataFrame({'range':['(2,30)',',']})
df['range'].replace(',','-', inplace=True)
df['range']
Out[43]:
0 (2,30)
1 -
Name: range, dtype: object
여기서 우리는 두 번째 행에서 정확한 일치를 얻고 교체가 발생합니다.
답변
Google 검색에서 모든 열 에서 문자열 대체를 수행하는 방법에 대한 다른 사용자를 위해 (예 : OP의 ‘범위’열과 같은 여러 열이있는 경우) Pandas에는 replace
데이터 프레임 개체 에서 사용할 수 있는 기본 제공 메서드가 있습니다.
df.replace(',', '-', regex=True)
출처 : 문서
답변
열 이름에서 모든 쉼표를 밑줄로 바꿉니다.
data.columns= data.columns.str.replace(' ','_',regex=True)
답변
또한 열에서 두 개 이상의 문자를 바꾸려는 경우 정규식을 사용하여 수행 할 수 있습니다.
import re
chars_to_remove = ['.', '-', '(', ')', '']
regular_expression = '[' + re.escape (''. join (chars_to_remove)) + ']'
df['string_col'].str.replace(regular_expression, '', regex=True)
답변
특정 열의 문자 만 교체해야하는 경우 어떻게 든 regex = True이고 in place = True 모두 실패하면 다음과 같이 작동 할 것이라고 생각합니다.
data["column_name"] = data["column_name"].apply(lambda x: x.replace("characters_need_to_replace", "new_characters"))
람다는이 시나리오에서 for 루프처럼 작동하는 함수와 비슷합니다. 여기서 x는 현재 열의 모든 항목을 나타냅니다.
당신이해야 할 유일한 일은 “column_name”, “characters_need_to_replace”및 “new_characters”를 변경하는 것입니다.