Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 함수
- flutter
- tensorflow
- ubuntu
- Linux
- sqlite
- 다이어트
- 유니티
- pandas
- 리눅스
- urllib
- 라즈베리파이
- python
- 맛집
- MS-SQL
- PyQt5
- swift
- ASP
- Unity
- PER
- GIT
- IOS
- MySQL
- 날짜
- port
- node.js
- PyQt
- Excel
- mssql
- javascript
Archives
아미(아름다운미소)
Pandas에서 특정 조건을 만족하지 않을 경우, 날짜 열을 비교하여 한 주 전의 값을 가져오기 본문
import pandas as pd
# 샘플 데이터 범위 확장 (년도가 바뀌는 경우 포함)
data = {
'date': pd.date_range(start='2023-12-20', periods=20, freq='D'), # 2023-12-20부터 20일간
'value': range(100, 2100, 100) # 100부터 2000까지 100씩 증가
}
df = pd.DataFrame(data)
# 주차(week) 컬럼 추가 (ISO 주차 기준)
df['week'] = df['date'].dt.isocalendar().week
df['year'] = df['date'].dt.isocalendar().year # 연도 정보 추가
# 조건: value가 500보다 큰 경우
condition = df['value'] > 500
# 조건을 만족하는 경우, 한 주 전의 값을 가져오기
df['new_value'] = df['value'] # 새로운 열 생성
for i in range(len(df)):
if condition[i]:
one_week_ago = df.loc[i, 'date'] - pd.Timedelta(weeks=1)
# 한 주 전의 값을 찾기
previous_value = df[df['date'] == one_week_ago]['value'].values
if len(previous_value) > 0:
df.loc[i, 'new_value'] = previous_value[0]
print(df)
결과
date value week year new_value
0 2023-12-20 100 51 2023 100
1 2023-12-21 200 51 2023 200
2 2023-12-22 300 51 2023 300
3 2023-12-23 400 51 2023 400
4 2023-12-24 500 51 2023 500
5 2023-12-25 600 52 2023 100 # 한 주 전 값 (2023-12-18)
6 2023-12-26 700 52 2023 200 # 한 주 전 값 (2023-12-19)
7 2023-12-27 800 52 2023 300 # 한 주 전 값 (2023-12-20)
8 2023-12-28 900 52 2023 400 # 한 주 전 값 (2023-12-21)
9 2023-12-29 1000 52 2023 500 # 한 주 전 값 (2023-12-22)
10 2023-12-30 1100 52 2023 600 # 한 주 전 값 (2023-12-23)
11 2023-12-31 1200 52 2023 700 # 한 주 전 값 (2023-12-24)
12 2024-01-01 1300 1 2024 1300 # 한 주 전 날짜 없음 → 기존 값 유지
13 2024-01-02 1400 1 2024 1400 # 한 주 전 날짜 없음 → 기존 값 유지
14 2024-01-03 1500 1 2024 1500 # 한 주 전 날짜 없음 → 기존 값 유지
15 2024-01-04 1600 1 2024 1600 # 한 주 전 날짜 없음 → 기존 값 유지
16 2024-01-05 1700 1 2024 1700 # 한 주 전 날짜 없음 → 기존 값 유지
17 2024-01-06 1800 1 2024 1800 # 한 주 전 날짜 없음 → 기존 값 유지
18 2024-01-07 1900 1 2024 1900 # 한 주 전 날짜 없음 → 기존 값 유지
19 2024-01-08 2000 2 2024 1300 # 한 주 전 값 (2024-01-01)
'랭귀지 > pandas' 카테고리의 다른 글
주차를 일자로변경 (0) | 2025.02.25 |
---|---|
아래는 두 개의 동일한 구조를 가진 데이터프레임을 생성하고, 두 데이터프레임의 값을 비교하여 **틀린 행을 찾아내는 예제** (0) | 2025.02.18 |
np.select (0) | 2025.02.13 |
bool 결측치 처리 (0) | 2025.02.04 |
assign (0) | 2025.01.09 |
Comments