반응형
Pandas를 사용하여 문자열 열의 각 값에 문자열 접두사 추가
팬더 데이터 프레임의 해당 열에서 각 값의 시작 부분에 문자열을 추가하고 싶습니다 (우아하게). 나는 이미 이것을 수행하는 방법을 알아 냈고 현재 다음을 사용하고 있습니다.
df.ix[(df['col'] != False), 'col'] = 'str'+df[(df['col'] != False), 'col']
이것은 할 수있는 일이 지옥처럼 보입니다-다른 방법을 알고 있습니까 (그 열이 0 또는 NaN 인 행에 문자를 추가 할 수도 있음)?
아직 명확하지 않은 경우 다음 단계로 전환하겠습니다.
col
1 a
2 0
으로:
col
1 stra
2 str0
df['col'] = 'str' + df['col'].astype(str)
예:
>>> df = pd.DataFrame({'col':['a',0]})
>>> df
col
0 a
1 0
>>> df['col'] = 'str' + df['col'].astype(str)
>>> df
col
0 stra
1 str0
대안 으로 접미사를 추가하거나 요소 자체를 조작하려는 경우 약간 더 읽기 쉬운 apply조합을 사용할 수도 있습니다 format.
df = pd.DataFrame({'col':['a', 0]})
df['col'] = df['col'].apply(lambda x: "{}{}".format('str', x))
또한 원하는 출력을 생성합니다.
col
0 stra
1 str0
Python 3.6 이상을 사용하는 경우 f- 문자열을 사용할 수도 있습니다.
df['col'] = df['col'].apply(lambda x: f"str{x}")
동일한 출력을 산출합니다.
f-string 버전은 @RomanPekar의 솔루션 (python 3.6.4)만큼 빠릅니다.
df = pd.DataFrame({'col':['a', 0]*200000})
%timeit df['col'].apply(lambda x: f"str{x}")
117 ms ± 451 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit 'str' + df['col'].astype(str)
112 ms ± 1.04 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
format그러나을 사용하면 실제로 훨씬 느립니다.
%timeit df['col'].apply(lambda x: "{}{}".format('str', x))
185 ms ± 1.07 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
테이블 파일을로드 dtype=str
하거나 열 유형을 문자열로 변환 df['a'] = df['a'].astype(str)
하면 다음과 같은 방법을 사용할 수 있습니다.
df['a']= 'col' + df['a'].str[:]
이 접근 방식을 사용하면의 앞에 추가, 추가 및 하위 집합 문자열을 사용할 수 df있습니다.
Pandas v0.23.4, v0.24.1에서 작동합니다. 이전 버전에 대해 모릅니다.
.loc을 사용한 또 다른 솔루션 :
df = pd.DataFrame({'col': ['a', 0]})
df.loc[df.index, 'col'] = 'string' + df['col'].astype(str)
위의 솔루션만큼 빠르지는 않지만 (루프 당 1ms 이상 느림) 다음과 같은 조건부 변경이 필요한 경우 유용 할 수 있습니다.
mask = (df['col'] == 0)
df.loc[df[mask].index, 'col'] = 'string' + df['col'].astype(str)
반응형
'program story' 카테고리의 다른 글
| Select2 Ajax 방법이 선택되지 않음 (0) | 2020.10.26 |
|---|---|
| VBA의 생성자에 인수 전달 (0) | 2020.10.26 |
| 새로운 Java 8 날짜 시간 API에 나노초 정밀도가없는 이유는 무엇입니까? (0) | 2020.10.26 |
| Eclipse에서 내 gradle 종속성 업데이트 (0) | 2020.10.25 |
| NSUserDefaults에서 사용자 기본값을 삭제하는 방법은 무엇입니까? (0) | 2020.10.25 |