簡體   English   中英

如何檢查 Pandas 中是否存在列

[英]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 數組,如果它是AC ,則其值為 True,否則為 False。 數組的真值是不明確的,因此any()調用將其簡化為單個 True/False 值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM