Czy istnieje sposób sprawdzenia, czy kolumna istnieje w ramce danych Pandas?
Załóżmy, że mam następujące DataFrame:
>>> 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
i chcę obliczyć df['sum'] = df['A'] + df['C']
Ale najpierw chcę sprawdzić, czy df['A']
istnieje, a jeśli nie, chcę obliczyć df['sum'] = df['B'] + df['C']
.
if not 'A' in df.columns:
do wykonania operacji, jeśliA
nie jest obecny wdf
Aby sprawdzić, czy istnieje co najmniej jedna kolumna, możesz użyć
set.issubset
, jak w:Jak wskazuje @brianpck w komentarzu,
set([])
można alternatywnie budować z nawiasami klamrowymi,Zobacz to pytanie, aby omówić składnię nawiasów klamrowych.
Lub możesz użyć rozumienia listy, jak w:
źródło
{'A', 'B'}.issubset()
Aby zasugerować inny sposób bez użycia instrukcji if, możesz użyć
get()
metody dlaDataFrame
s. Aby wykonać sumę na podstawie pytania:Metoda
DataFrame
get działa podobnie jak słowniki w języku Python.źródło