2020年1月13日 星期一

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.01.0NaN3.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0三層NaNNaN建國四路151~180號鹽埕區興仁段
1買賣房地(土地+建物)+車位1.01.01.03.02.03.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0七層0.00.0建國四路151~180號鹽埕區興仁段
2買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0五層0.00.0建國四路151~180號鹽埕區興仁段
3買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0十一層0.00.0建國四路151~180號鹽埕區興仁段
4買賣房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01070830.01.0十三層0.00.0建國四路151~180號鹽埕區興仁段
5 rows × 35 columns

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

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

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

In [3]:
df.loc[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層'), '申報種類'] = '測試'
df[(df['行政區']=='楠梓區') & (df['代表建號層次']=='五層')].head()
Out[3]:
申報種類交易標的種類土地數量建物數量車位數量幾房幾廳幾衛有無隔間建物型態...代表建號主要建材代表建號總層數代表建號建築完成日期代表建號屋齡代表建號層次車位總價格車位總持分面積地建號範圍行政區地段
1639測試房地(土地+建物)1.01.0NaN3.02.02.0Y華廈(10F含以下有電梯)...鋼筋混凝土造7.0820727.026.0五層NaNNaN青田街61~90號楠梓區楠梓段五小段
1667測試房地(土地+建物)1.01.0NaN3.02.02.0Y華廈(10F含以下有電梯)...鋼筋混凝土造10.0820503.026.0五層NaNNaN常德路317巷6弄1~30號楠梓區清楠段
1682測試房地(土地+建物)1.01.0NaN2.01.01.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01041112.03.0五層NaNNaN加昌路61~90號楠梓區後勁段四小段
1691測試房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01080104.00.0五層0.00.0德富街286巷1~30號楠梓區翠屏段一小段
1694測試房地(土地+建物)+車位1.01.01.03.02.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01080104.00.0五層0.00.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.01.0NaN5.06.02.0Y華廈(10F含以下有電梯)...鋼筋混凝土造7.0820727.026.0五層NaNNaN青田街61~90號楠梓區楠梓段五小段
1667測試房地(土地+建物)1.01.0NaN5.06.02.0Y華廈(10F含以下有電梯)...鋼筋混凝土造10.0820503.026.0五層NaNNaN常德路317巷6弄1~30號楠梓區清楠段
1682測試房地(土地+建物)1.01.0NaN5.06.01.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01041112.03.0五層NaNNaN加昌路61~90號楠梓區後勁段四小段
1691測試房地(土地+建物)+車位1.01.01.05.06.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01080104.00.0五層0.00.0德富街286巷1~30號楠梓區翠屏段一小段
1694測試房地(土地+建物)+車位1.01.01.05.06.02.0Y住宅大樓(11F含以上有電梯)...見其它登記事項15.01080104.00.0五層0.00.0德富街286巷1~30號楠梓區翠屏段一小段
5 rows × 35 columns
In [ ]:
 

沒有留言:

【公告】網站遷移,未來內容將發表於新網站!!

 受限於blogger本身架構與限制,本網站所有內容已遷移至新網站,網址如下: https://kuo.us.to/wordpress/