Level 1 Pandas 검색/색인
2019-10-07
Table: order
id | user_id | product_id | date | price | address | state |
---|---|---|---|---|---|---|
1 | 3 | 9 | 2017-01-01 | 500 | Seoul | confirmed |
2 | 1 | 7 | 2017-01-03 | 700 | Seoul | confirmed |
3 | 3 | 8 | 2017-01-03 | 900 | Daejeon | confirmed |
4 | 4 | 2 | 2017-01-07 | 500 | canceled | |
5 | 7 | 3 | 2017-01-09 | 700 | Incheon | confirmed |
6 | 5 | 7 | 2017-01-09 | 600 | Busan | canceled |
7 | 2 | 5 | 2017-01-10 | 200 | canceled |
Column 검색
order["date"]
order[["user_id", "date", "amount"]]
columns = ["user_id", "date", "amount"]
order[columns]
Row 검색
# loc = locate
order.loc
order.loc[1]
order.loc[[1, 3, 7]]
order_ids = [1, 3, 7]
order.loc[order_ids]
type(order.loc[[1, 3, 7]])
# pandas.core. frame.DataFrame
Row/Column 검색
order_date = order.loc[1]["date"]
order_date
%timeit order.loc[1]["date"]
order_date = order.loc[1, "date"]
order_date
%timeit order.loc[1, "date"]
Row/Column 검색: at, loc
- pandas at이 loc보다 속도가 빠름
- at은 row, column 모두 하나씩만 접근 가능
order.at[1, "date"]
색인
order["date"] == "2017-01-03"
id | |
---|---|
1 | False |
2 | True |
3 | True |
4 | False |
order[order["date"] == "2017-01-03"]
user_id | product_id | date | price | address | state | |
---|---|---|---|---|---|---|
id | ||||||
2 | 1 | 7 | 2017-01-03 | 700 | Seoul | confirmed |
3 | 3 | 8 | 2017-01-03 | 900 | Daejeon | confirmed |
order["price"] >= 500
id | |
---|---|
1 | True |
2 | True |
3 | True |
order[order["price"] >= 500]
user_id | product_id | date | price | address | state | |
---|---|---|---|---|---|---|
id | ||||||
1 | 3 | 9 | 2017-01-01 | 500 | Seoul | confirmed |
2 | 1 | 7 | 2017-01-03 | 700 | Seoul | confirmed |
다중조건
(order["price"] >= 500) & (order["state"] == "confirmed")
id | |
---|---|
1 | True |
2 | True |
order[(order["price"] >= 500) & (order["state"] == "confirmed")]
id | |
---|---|
1 | True |
2 | True |
high = (order["price"] >= 500)
confirmed = (order["state"] == "confirmed")
order[high & confirmed]
id | |
---|---|
1 | True |
2 | True |
order.loc[order["date"] == "2017-01-09", "price"]
order.loc[order["date"] == "2017-01-09", ["date", "price"]]