merge, concat 외에 유용한 매서드를 알아보자!
매서드는 함수의 일종인데, 함수가 독립적으로 사용 가능한 것이라면(display), 매서드는 목표물이 있어야 한다. 그래서 매서드는 df.split과 같이 목표물.매서드의 형식으로 쓴다.
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'가 출력된다
옵션에는 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)
이 코드는 진짜 모르겠다...열심히 공부해서 언제가는 해석해야지,,,
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과 같다.