lambda, split, rrule

김채윤·2025년 11월 24일

merge, concat 외에 유용한 매서드를 알아보자!
매서드는 함수의 일종인데, 함수가 독립적으로 사용 가능한 것이라면(display), 매서드는 목표물이 있어야 한다. 그래서 매서드는 df.split과 같이 목표물.매서드의 형식으로 쓴다.

  1. lambda
    lambda함수는 이름 없는 임의의 함수이다. 함수를 한 번만 사용하거나, 함수를 인자로 전달해야 할 때 유용하게 사용할 수 있다.
mylist = [1, 2, 3, 4, 5]

mylist2 = list(filter(lambda x: x % 2 == 1, mylist))
print(mylist2)

mylist에 담긴 숫자 중에서 2로 나눈 나머지가 1인 숫자만 필터링해서 list로 출력해서 그걸 mylist2라고 지정해줘

mylist = ['apple', 'banana', 'cherry']
mylist2 = sorted(mylist, key=lambda x: len(x))
print(mylist2)

sorted(mylist)는 새로운 기준으로 mylist를 다시 정렬해줘
key=lambda x: len(x) 정렬 기준은 문자열의 길이
'apple', 'banana', 'cherry'의 len은 5,6,6이므로
오름차순으로 정렬하면 'apple', 'banana', 'cherry'
그러므로 print(mylist2)는 'apple', 'banana', 'cherry'가 출력된다

  1. split
    하나의 값으로 묶여 있는 데이터를 문자열을 기준으로 나눌 때 사용한다.
    특정 문자나 패턴으로 나눌 수 있다.
    SQL의 SUNSTR INDEX와 같다.

옵션에는 sep: 문자열을 나눌 구분자
maxsplit: 최대 split 횟수(디폴트: 모두 나눔)이 있다.

s = "aa.bb.cc.dd.ee.ff.gg"

s.split('.')
s.split(sep='.')

아래 두 코드 다 .을 기준으로 문자열을 다 끊어서 출력한다
#'aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg'

# '.' 구분자를 기준으로 데이터를 나누고 컬럼으로 받음 
# lambda 함수와 결합하여 사용하는 경우 
# 7번 반복, a 를 컬럼 구분자로 받아주고, format 함수를 통해 a0, a1, a2 ... 로 표기
# lambda 함수를 통해 '.' 로 구분. 단, len(x.split('.') 즉 7 보다 i 가 작을 때 수행
# 중요
for i in range(i):
    df2["a{}".format(i)] = df2['x'].apply(lambda x: x.split('.')[i] if len(x.split('.'))>i else None)

이 코드는 진짜 모르겠다...열심히 공부해서 언제가는 해석해야지,,,

  1. rrule
    날짜 데이터를 원하는 기준에 따라 출력할 수 있는 매서드
    주요옵션: freq: 반복 주기를 나타내는 파라미터로, secondly, minutely, hourly, daily, weekly, monthly, yearly가 있다.
    dtstart: 반복을 시작하는 날짜와 시간
    interval: 주기적으로 반복되는 간격
    count: 생성할 날짜의 최대 수
    until: 반복이 끝나는 날짜와 시간
from datetime import datetime
from dateutill.rrule import rrule, DAILY, TU

start_date = datetime(2024, 2, 1)
end_date = datetime(2024, 3, 1)

weekly_rule = rrule(DAILY, dtstart=start_date, until=end_date)

for date in weekly_rule:
    print(date.strftime('%Y-%m-%d'))

2024년 2월 1일부터 2024년 3월 1일까지의 매일을 weekly_rule이라 해주자
이걸 년도-월-일의 형식으로 출력해줘
*strf는 SQL의 DATE_FORMAT과 같다.

0개의 댓글