팬더 데이터프레임의 전체 열의 하위 문자열
팬더 데이터 프레임 "df"를 가지고 있습니다.이 데이터 프레임에는 여러 개의 열이 있고, 그 중 하나는 서브스트링을 해야 합니다.열 이름이 "col" 이라고 가정해 보겠습니다.아래와 같이 "for" 루프를 실행하고 열을 서브스트링할 수 있습니다.
for i in range(0,len(df)):
df.iloc[i].col = df.iloc[i].col[:9]
하지만 저는 "for" 루프를 사용하지 않고 속성을 사용하여 직접 수행할 수 있는 옵션이 있는지 알고 싶었습니다.저는 엄청난 양의 데이터를 가지고 있는데, 이렇게 하면 데이터 처리에 시간이 많이 걸릴 것입니다.
사용.str
대괄호가 있는 액세서리:
df['col'] = df['col'].str[:9]
df['col'] = df['col'].str.slice(0, 9)
열이 문자열이 아닌 경우 다음을 사용합니다.astype
변환하는 방법:
df['col'] = df['col'].astype(str).str[:9]
OP의 데이터 프레임을 정확히 모르기 때문에 테스트용으로 만들 수 있습니다.
df = pd.DataFrame({'col': {0: '2020-12-08', 1: '2020-12-08', 2: '2020-12-08', 3: '2020-12-08', 4: '2020-12-08', 5: '2020-12-08', 6: '2020-12-08', 7: '2020-12-08', 8: '2020-12-08', 9: '2020-12-08'}})
[Out]:
col
0 2020-12-08
1 2020-12-08
2 2020-12-08
3 2020-12-08
4 2020-12-08
5 2020-12-08
6 2020-12-08
7 2020-12-08
8 2020-12-08
9 2020-12-08
동일한 데이터 프레임에 열을 저장하고자 할 경우df
, 그리고 우리는 단지 4개의 글자만을 보관하고 싶습니다.col_substring
, 할 수 있는 다양한 선택지가 있습니다.
옵션1
사용중
df['col_substring'] = df['col'].str[:4]
[Out]:
col col_substring
0 2020-12-08 2020
1 2020-12-08 2020
2 2020-12-08 2020
3 2020-12-08 2020
4 2020-12-08 2020
5 2020-12-08 2020
6 2020-12-08 2020
7 2020-12-08 2020
8 2020-12-08 2020
9 2020-12-08 2020
옵션2
다음과 같이 사용
df['col_substring'] = df['col'].str.slice(0, 4)
[Out]:
col col_substring
0 2020-12-08 2020
1 2020-12-08 2020
2 2020-12-08 2020
3 2020-12-08 2020
4 2020-12-08 2020
5 2020-12-08 2020
6 2020-12-08 2020
7 2020-12-08 2020
8 2020-12-08 2020
9 2020-12-08 2020
아니면 이렇게
df['col_substring'] = df['col'].str.slice(stop=4)
옵션3
사용자 지정 람다 함수 사용
df['col_substring'] = df['col'].apply(lambda x: x[:4])
[Out]:
col col_substring
0 2020-12-08 2020
1 2020-12-08 2020
2 2020-12-08 2020
3 2020-12-08 2020
4 2020-12-08 2020
5 2020-12-08 2020
6 2020-12-08 2020
7 2020-12-08 2020
8 2020-12-08 2020
9 2020-12-08 2020
옵션4
정규식과 함께 사용자 지정 람다 함수 사용(포함)
import re
df['col_substring'] = df['col'].apply(lambda x: re.findall(r'^.{4}', x)[0])
[Out]:
col col_substring
0 2020-12-08 2020
1 2020-12-08 2020
2 2020-12-08 2020
3 2020-12-08 2020
4 2020-12-08 2020
5 2020-12-08 2020
6 2020-12-08 2020
7 2020-12-08 2020
8 2020-12-08 2020
9 2020-12-08 2020
옵션5
사용중
df['col_substring'] = np.vectorize(lambda x: x[:4])(df['col'])
[Out]:
col col_substring
0 2020-12-08 2020
1 2020-12-08 2020
2 2020-12-08 2020
3 2020-12-08 2020
4 2020-12-08 2020
5 2020-12-08 2020
6 2020-12-08 2020
7 2020-12-08 2020
8 2020-12-08 2020
9 2020-12-08 2020
참고:
- 이상적인 솔루션은 사용 사례, 제약 조건 및 데이터 프레임에 따라 달라집니다.
언급URL : https://stackoverflow.com/questions/36505847/substring-of-an-entire-column-in-pandas-dataframe
'programing' 카테고리의 다른 글
C에서 주(공)와 주()의 차이 (0) | 2023.10.22 |
---|---|
MySQL에서 두 날짜 간의 연도 차이를 정수로 가져옵니다. (0) | 2023.10.22 |
계층 이동 및 Maria를 사용하여 데이터베이스에 연결하지 못함DB (0) | 2023.10.22 |
두 번째 테이블의 행이 존재하지 않더라도 오른쪽 조인 (0) | 2023.10.22 |
비트 유형 열에 삽입할 수 있는 값은 무엇입니까? (0) | 2023.10.22 |