如何知道欄位是否存在(Pandas)?
如何知道欄位是否存在(Pandas)?¶
有時候預防勝於治療,事先做好預防措施,
要比程式碼出現錯誤訊息來的要好。
個人不大認同,防呆措施是等到遇到問題才來補救,
而是事先知道的話,撰寫程式就應該寫進程式碼內。
場景發生在某家公司。
公司唯一不變的就是天天都在變,無論是專案排程、程式碼撰寫手法、資料庫欄位、等等。
遇到這種情形,想必不只有少數工程師會遇到。像在這裡遇到資料庫欄位被更改了,連通知都沒有,若是沒有做好預防措施,程式肯定是會炸開。
如何知道欄位是否存在呢?
首先建立一個虛擬的 DataFrame 。
In [10]:
import pandas as pd
from datetime import datetime
import numpy as np
dt_date_range = pd.date_range(datetime.now(), periods=5, freq="D")
df = pd.DataFrame(np.random.randn(5,5),
index = dt_date_range,
columns = ["A","B","C","D","E"])
print(df)
A B C D E 2021-04-08 09:48:45.882321 -0.216178 -0.060684 -1.014555 2.126969 -1.529797 2021-04-09 09:48:45.882321 -0.069996 0.961325 -0.832860 -0.314839 0.638048 2021-04-10 09:48:45.882321 0.237398 0.450337 -1.224393 -0.130104 1.722161 2021-04-11 09:48:45.882321 -1.313990 -0.249436 -0.064166 0.022445 0.876301 2021-04-12 09:48:45.882321 -1.046066 0.560804 1.499357 -0.703995 1.335944
檢查方法1¶
In [11]:
if 'A' in df:
print("A欄位存在")
if 'F' in df:
pass
else:
print("F欄位不存在")
A欄位存在 F欄位不存在
檢查方法2¶
In [13]:
if 'A' in df.columns:
print("A欄位存在")
if 'F' in df.columns:
pass
else:
print("F欄位不存在")
A欄位存在 F欄位不存在
檢查方法3¶
In [17]:
# 一次檢查一到多個欄位是否存在
# 在這裡檢查 B 欄和 D 欄,若存在則加總列印
# 這裡是用集合來做檢查
if set(['B','D']).issubset(df.columns):
print(df['B'] + df['D'])
2021-04-08 09:48:45.882321 2.066285 2021-04-09 09:48:45.882321 0.646486 2021-04-10 09:48:45.882321 0.320233 2021-04-11 09:48:45.882321 -0.226991 2021-04-12 09:48:45.882321 -0.143191 Freq: D, dtype: float64
檢查方法4¶
In [16]:
# 一次檢查一到多個欄位是否存在
# 在這裡檢查 B 欄和 D 欄,若存在則加總列印
# 這裡是用字典來做檢查。
if {'B', 'D'}.issubset(df.columns):
print(df['B'] + df['D'])
2021-04-08 09:48:45.882321 2.066285 2021-04-09 09:48:45.882321 0.646486 2021-04-10 09:48:45.882321 0.320233 2021-04-11 09:48:45.882321 -0.226991 2021-04-12 09:48:45.882321 -0.143191 Freq: D, dtype: float64
Lai Tai-Yu (賴岱佑)
Comments
Post a Comment