programing

팬더 데이터프레임의 전체 열의 하위 문자열

newsource 2023. 10. 22. 20:04

팬더 데이터프레임의 전체 열의 하위 문자열

팬더 데이터 프레임 "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]

str.slice:

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