반응형
날짜 범위 index 만들기¶
In [25]:
test1_df.head()
Out[25]:
Math | Science | Name | |
---|---|---|---|
0 | 10 | 70 | Mike |
1 | 20 | 80 | Alice |
2 | 30 | 90 | Bob |
3 | 40 | 100 | Jane |
4 | 50 | 10 | Tony |
날짜 정보를 index로 넣는 경우 날짜 정보를 가진 series를 만들어야 합니다 이 때 data_range()함수를 사용할 수 있습니다.
In [28]:
dates = pd.date_range('2021-01-01', '2021-01-10')
dates
Out[28]:
DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04',
'2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08',
'2021-01-09', '2021-01-10'],
dtype='datetime64[ns]', freq='D')
In [29]:
test1_df.index = dates
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-29-47101527b1b2> in <module>
----> 1 test1_df.index = dates
~\anaconda3\envs\data_science\lib\site-packages\pandas\core\generic.py in __setattr__(self, name, value)
5473 try:
5474 object.__getattribute__(self, name)
-> 5475 return object.__setattr__(self, name, value)
5476 except AttributeError:
5477 pass
pandas\_libs\properties.pyx in pandas._libs.properties.AxisProperty.__set__()
~\anaconda3\envs\data_science\lib\site-packages\pandas\core\generic.py in _set_axis(self, axis, labels)
667 def _set_axis(self, axis: int, labels: Index) -> None:
668 labels = ensure_index(labels)
--> 669 self._mgr.set_axis(axis, labels)
670 self._clear_item_cache()
671
~\anaconda3\envs\data_science\lib\site-packages\pandas\core\internals\managers.py in set_axis(self, axis, new_labels)
219 if new_len != old_len:
220 raise ValueError(
--> 221 f"Length mismatch: Expected axis has {old_len} elements, new "
222 f"values have {new_len} elements"
223 )
ValueError: Length mismatch: Expected axis has 5 elements, new values have 10 elements
dates라는 이름으로 날짜 정보를 갖는 series를 생성하였으나 index로 사용하기에는 data frame 로우 갯수와 달라 문제가 발생합니다. shape 속성으로 dates series 정보를 보면 10개의 로우를 가지며 test1_df 데이터 프레임은 아래와 같이 5개의 로우를 갖습니다.
In [36]:
dates.shape
Out[36]:
(10,)
In [38]:
test1_df.shape
Out[38]:
(5, 3)
dates series의 0번째 부터 3번째 값만 갖는 new_dates series를 생성합니다. shape 속성으로 확인 시 5개의 로우를 갖는 series로 변경된 것을 확인할 수 있습니다.
In [45]:
new_dates = dates[0:5]
new_dates.shape
Out[45]:
(5,)
In [46]:
test1_df.index = new_dates
test1_df.head()
Out[46]:
Math | Science | Name | |
---|---|---|---|
2021-01-01 | 10 | 70 | Mike |
2021-01-02 | 20 | 80 | Alice |
2021-01-03 | 30 | 90 | Bob |
2021-01-04 | 40 | 100 | Jane |
2021-01-05 | 50 | 10 | Tony |
index를 새롭게 변경한 new_index series로 변경한 후 index로 변경하였습니다. 정상적으로 index가 변경된 것을 확인할 수 있습니다.
반응형
'Programming > Pandas' 카테고리의 다른 글
[Pandas] 리인덱싱 (0) | 2022.01.01 |
---|---|
[Pandas] 불리언 선택 (0) | 2021.12.31 |
[Pandas] 데이터 프레임으로 파일로딩 (0) | 2021.12.26 |
[Pandas] DataFrame 만들기 및 index 변경하기 (0) | 2021.12.26 |
[Pandas] 데이터 프레임에 칼럼 추가 하기 (0) | 2021.01.24 |