[英]How to check if a column exists in Pandas
如何檢查 Pandas DataFrame df
中是否存在列?
A B C
0 3 40 100
1 6 30 200
我將如何檢查上述 DataFrame 中是否存在列"A"
以便我可以計算:
df['sum'] = df['A'] + df['C']
如果"A"
不存在:
df['sum'] = df['B'] + df['C']
這將起作用:
if 'A' in df:
但為了清楚起見,我可能會寫成:
if 'A' in df.columns:
要檢查一個或多個列是否都存在,您可以使用set.issubset
,如下所示:
if set(['A','C']).issubset(df.columns):
df['sum'] = df['A'] + df['C']
正如@brianpck 在評論中指出的那樣, set([])
也可以用花括號構造,
if {'A', 'C'}.issubset(df.columns):
有關花括號語法的討論,請參閱此問題。
或者,您可以使用生成器推導,如:
if all(item in df.columns for item in ['A','C']):
只是為了建議另一種不使用 if 語句的方法,您可以對DataFrame
使用get()
方法。 根據問題執行求和:
df['sum'] = df.get('A', df['B']) + df['C']
DataFrame
的 get 方法具有與 python 字典類似的行為。
您可以使用集合的方法issuperset
:
set(df).issuperset(['A', 'B'])
# set(df.columns).issuperset(['A', 'B'])
您還可以在列上調用isin()
以檢查它是否存在並在結果上調用any()
以將其減少為單個 boolean 值1 :
if df.columns.isin(['A', 'C']).any():
# do something
要檢查列名是否不存在,可以在 if 子句中使用not
運算符:
if 'A' not in df:
# do something
或與isin().any()
調用一起。
if not df.columns.isin(['A', 'C']).any():
# do something
1:對列的 isin isin()
調用返回一個 boolean 數組,如果它是A
或C
,則其值為 True,否則為 False。 數組的真值是不明確的,因此any()
調用將其簡化為單個 True/False 值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.