J'essaie de vérifier si une certaine valeur est contenue dans une colonne python. J'utilise df.date.isin(['07311954'])
] _, ce qui ne fait aucun doute pour être un bon outil. Le problème c’est que j’ai plus de 350 000 lignes et que la sortie ne les montre pas toutes afin que je puisse voir si la valeur est réellement contenue. En d'autres termes, je veux simplement savoir (O / N) si une valeur spécifique est contenue ou non dans une colonne, mon code suit:
import numpy as np
import pandas as pd
import glob
df = (pd.read_csv('/home/jayaramdas/anaconda3/Thesis/FEC_data/itpas2_data/itpas214.txt',\
sep='|', header=None, low_memory=False, names=['1', '2', '3', '4', '5', '6', '7', \
'8', '9', '10', '11', '12', '13', 'date', '15', '16', '17', '18', '19', '20', \
'21', '22']))
df.date.isin(['07311954'])
Je pense que vous avez besoin de str.contains
, si vous avez besoin de lignes où les valeurs de la colonne date
contiennent la chaîne 07311954
:
print df[df['date'].astype(str).str.contains('07311954')]
Ou si type
de date
colonne est string
:
print df[df['date'].str.contains('07311954')]
Si vous voulez vérifier les 4 derniers chiffres de string
1954
dans la colonne date
:
print df[df['date'].astype(str).str[-4:].str.contains('1954')]
Échantillon:
print df['date']
0 8152007
1 9262007
2 7311954
3 2252011
4 2012011
5 2012011
6 2222011
7 2282011
Name: date, dtype: int64
print df['date'].astype(str).str[-4:].str.contains('1954')
0 False
1 False
2 True
3 False
4 False
5 False
6 False
7 False
Name: date, dtype: bool
print df[df['date'].astype(str).str[-4:].str.contains('1954')]
cmte_id trans_typ entity_typ state employer occupation date \
2 C00119040 24K CCM MD NaN NaN 7311954
amount fec_id cand_id
2 1000 C00140715 H2MD05155
Vous pouvez simplement utiliser ceci:
'07311954' in df.date.values
Qui renvoie True
ou False
Voici l'explication supplémentaire:
Dans les pandas, utiliser in
check directement avec DataFrame et Series (par exemple, val in df
Ou val in series
) Vérifiera si le val
est contenu dans le Index.
MAIS vous pouvez toujours utiliser in
vérifier leurs valeurs aussi (au lieu d'index)! En utilisant simplement val in df.col_name.values
Ou val in series.values
. De cette façon, vous vérifiez réellement le val
avec un tableau Numpy.
Et .isin(vals)
est l'inverse, il vérifie si les valeurs DataFrame/Series sont dans le vals
. Ici, vals
doit être défini ou ressemblant à une liste. Donc, ce n'est pas la façon naturelle d'aller pour la question.
Vous pouvez utiliser any
:
print any(df.column == 07311954)
True #true if it contains the number, false otherwise
Si vous voulez plutôt voir combien de fois '07311954' apparaît dans une colonne, vous pouvez utiliser:
df.column[df.column == 07311954].count()