Python學習筆記-Pandas設定師選條件後更改欄位值

以Pandas模組讀取資料

In [1]:
import pandas as pd
url="https://data.kcg.gov.tw/dataset/f91cb647-ab05-4474-9687-d918421ca3a4/resource/25c77fbc-950a-45eb-b91e-79b536fabae5/download/d00mei-yi03open-data-10801open-data1080401-1080630.xlsx"
df = pd.read_excel(url)
df.head()
Out[1]:
申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 建物型態 代表建號主要建材 代表建號總層數 代表建號建築完成日期 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段
0 買賣 房地(土地+建物) 1.0 1.0 NaN 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1070830.0 1.0 三層 NaN NaN 建國四路151~180號 鹽埕區 興仁段
1 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 3.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1070830.0 1.0 七層 0.0 0.0 建國四路151~180號 鹽埕區 興仁段
2 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1070830.0 1.0 五層 0.0 0.0 建國四路151~180號 鹽埕區 興仁段
3 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1070830.0 1.0 十一層 0.0 0.0 建國四路151~180號 鹽埕區 興仁段
4 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1070830.0 1.0 十三層 0.0 0.0 建國四路151~180號 鹽埕區 興仁段
5 rows × 35 columns

設定篩選條件「行政區」為楠梓區,且「代表建號層次」為五層

In [2]:
df[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層')].head()
Out[2]:
申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 建物型態 代表建號主要建材 代表建號總層數 代表建號建築完成日期 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段
1639 買賣 房地(土地+建物) 1.0 1.0 NaN 3.0 2.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 7.0 820727.0 26.0 五層 NaN NaN 青田街61~90號 楠梓區 楠梓段五小段
1667 買賣 房地(土地+建物) 1.0 1.0 NaN 3.0 2.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 10.0 820503.0 26.0 五層 NaN NaN 常德路317巷6弄1~30號 楠梓區 清楠段
1682 買賣 房地(土地+建物) 1.0 1.0 NaN 2.0 1.0 1.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1041112.0 3.0 五層 NaN NaN 加昌路61~90號 楠梓區 後勁段四小段
1691 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
1694 買賣 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
5 rows × 35 columns

將上面的篩選條件找出來的資料,把「申報種類」改為測試

In [3]:
df.loc[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層'), '申報種類'] = '測試'
df[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層')].head()
Out[3]:
申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 建物型態 代表建號主要建材 代表建號總層數 代表建號建築完成日期 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段
1639 測試 房地(土地+建物) 1.0 1.0 NaN 3.0 2.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 7.0 820727.0 26.0 五層 NaN NaN 青田街61~90號 楠梓區 楠梓段五小段
1667 測試 房地(土地+建物) 1.0 1.0 NaN 3.0 2.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 10.0 820503.0 26.0 五層 NaN NaN 常德路317巷6弄1~30號 楠梓區 清楠段
1682 測試 房地(土地+建物) 1.0 1.0 NaN 2.0 1.0 1.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1041112.0 3.0 五層 NaN NaN 加昌路61~90號 楠梓區 後勁段四小段
1691 測試 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
1694 測試 房地(土地+建物)+車位 1.0 1.0 1.0 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
5 rows × 35 columns

依篩選條件,一次更改2個欄位值

例如將「幾房」的值改為5,「幾廳」的值改為6

In [4]:
df.loc[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層'), ['幾房', '幾廳']] = [5,6]
# 也可用以下方式寫:
#df.loc[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層'), ['幾房', '幾廳']] = {5,6}

df[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層')].head()
Out[4]:
申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 建物型態 代表建號主要建材 代表建號總層數 代表建號建築完成日期 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段
1639 測試 房地(土地+建物) 1.0 1.0 NaN 5.0 6.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 7.0 820727.0 26.0 五層 NaN NaN 青田街61~90號 楠梓區 楠梓段五小段
1667 測試 房地(土地+建物) 1.0 1.0 NaN 5.0 6.0 2.0 Y 華廈(10F含以下有電梯) 鋼筋混凝土造 10.0 820503.0 26.0 五層 NaN NaN 常德路317巷6弄1~30號 楠梓區 清楠段
1682 測試 房地(土地+建物) 1.0 1.0 NaN 5.0 6.0 1.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1041112.0 3.0 五層 NaN NaN 加昌路61~90號 楠梓區 後勁段四小段
1691 測試 房地(土地+建物)+車位 1.0 1.0 1.0 5.0 6.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
1694 測試 房地(土地+建物)+車位 1.0 1.0 1.0 5.0 6.0 2.0 Y 住宅大樓(11F含以上有電梯) 見其它登記事項 15.0 1080104.0 0.0 五層 0.0 0.0 德富街286巷1~30號 楠梓區 翠屏段一小段
5 rows × 35 columns
In [ ]:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *