Панды проходят через ряд столбцов - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь выполнить итерации по столбцу данных pandas при чтении файла CSV ...

import pandas as pd

df = pd.read_csv('vavs.csv', dtype={'trunkAdress':str}, index_col='mechTag')


for column in df[['areaServed']]:
    # Select column contents by column name using [] operator
    columnSeriesObj = df[column]
    print('Colunm Name : ', column)
    print('Column Contents : ', columnSeriesObj.values)

Это выведет:

Colunm Name :  areaServed
Column Contents :  ['103_104' '101_105' '102' '110' '11' '114_116' '115_121' '117' '118_120']

Но почему это не будет печататься hit? Я не понимаю, почему утверждение не соответствует действительности. Что мне нужно изменить, чтобы напечатать hit?

if columnSeriesObj.values.any() == '11':
    print('hit!')

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Вы должны проверить any на серии bool следующим образом:

for column in df[['areaServed']]:
    # Select column contents by column name using [] operator
    columnSeriesObj = df[column]
    print('Colunm Name : ', column)
    print('Column Contents : ', columnSeriesObj.values)
    if (columnSeriesObj.values == '11').any():
        print('hit!')    

Вывод:

Colunm Name :  areaServed
Column Contents :  ['103_104' '101_105' '102' '110' '11' '114_116' '115_121' '11
7' '118_120']
hit!
0 голосов
/ 09 октября 2019

columnSeriesObj.values.any() возвращает значение True для любого элемента. В вашем случае columnSeriesObj.values.any() будет иметь значение True, которое не будет равно «11», поэтому ничего не будет напечатано.

Вы можете попробовать что-то вроде этого:

val = [ii for ii in columnSeriesObj.values if ii == '11']
if val:
    print('hit')

или что-то вроде этого с numpy:

if np.any(columnSeriesObj.values == value):
    print('hit')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...