Cara memeriksa apakah ada kolom di Panda

274

Apakah ada cara untuk memeriksa apakah ada kolom di DataFrame Pandas?

Misalkan saya memiliki DataFrame berikut:

>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                       'B': [randint(1, 9)*10 for x in xrange(10)],
                       'C': [randint(1, 9)*100 for x in xrange(10)]})
>>> df
   A   B    C
0  3  40  100
1  6  30  200
2  7  70  800
3  3  50  200
4  7  50  400
5  4  10  400
6  3  70  500
7  8  30  200
8  3  40  800
9  6  60  200

dan saya ingin menghitung df['sum'] = df['A'] + df['C']

Tetapi pertama-tama saya ingin memeriksa apakah df['A']ada, dan jika tidak, saya ingin menghitung df['sum'] = df['B'] + df['C'].

npires
sumber

Jawaban:

585

Ini akan berhasil:

if 'A' in df:

Tetapi untuk kejelasan, saya mungkin akan menuliskannya sebagai:

if 'A' in df.columns:
chrisb
sumber
2
sebaliknya, seseorang dapat menggunakan: if not 'A' in df.columns:untuk menjalankan operasi jika Atidak ada didf
Robvh
81

Untuk memeriksa apakah ada satu atau beberapa kolom, Anda dapat menggunakan set.issubset, seperti pada:

if set(['A','C']).issubset(df.columns):
   df['sum'] = df['A'] + df['C']                

Seperti yang ditunjukkan @brianpck dalam komentar, set([])dapat juga dibuat dengan kurung kurawal,

if {'A', 'C'}.issubset(df.columns):

Lihat pertanyaan ini untuk diskusi tentang sintaks-kurung kurawal.

Atau, Anda dapat menggunakan pemahaman daftar, seperti pada:

if all([item in df.columns for item in ['A','C']]):
C8H10N4O2
sumber
11
Atau hanya{'A', 'B'}.issubset()
brianpck
7

Hanya untuk menyarankan cara lain tanpa menggunakan pernyataan if, Anda dapat menggunakan get()metode untuk DataFrames. Untuk melakukan penjumlahan berdasarkan pertanyaan:

df['sum'] = df.get('A', df['B']) + df['C']

The DataFrameMetode get memiliki perilaku yang sama seperti kamus python.

Gerges
sumber