Я работаю с большой базой данных и тестирую свой код на меньшем образце большой базы данных. Я хочу знать, сколько строк содержат заданную строку (search_term) в каждом столбце. Например, в столбце 1 «балун» отображается в 20 строках, в столбце 2 «балун» отображается в 4 строках, et c.
Вот мой код:
#reading csv spreadsheet
data_set = pd.read_csv("~/Documents/test_sample.csv")
#establishing data frame
df = pd.DataFrame(data_set)
#establishing variables for function
columns = df.columns
search_term = "balloon"
#function, summing rows that contain the search term for each column while ignoring case
for column in columns:
count = df[column].astype(str).str.contains(search_term, flags=re.IGNORECASE, na=False).sum()
print (column, " has ", count, " rows containing ", search_term)
вывод:
COLUMN_1 имеет 0 строк, содержащих балун
COLUMN_2 имеет 11 строк, содержащих балун
COLUMN_3 имеет 0 строк, содержащих балун
COLUMN_4 имеет 0 строк содержащий балун
COLUMN_5 имеет 48 строк, содержащих балун
COLUMN_6 имеет 0 строк, содержащих балун
COLUMN_7 имеет 0 строк, содержащих балун
COLUMN_8 имеет 0 строк, содержащих балун
COLUMN_9 имеет 0 строк, содержащих балун
Проблема:
Подсчет столбца_5 правильный (48), но счетчик столбца_2 выключен в 100 раз (реальное значение 1100 ), а другие столбцы содержат «баллон», но все равно считаются равными нулю.
Я применил это и к другим файлам csv, и, похоже, дает сочетание правильных и неправильных результатов. Есть идеи, почему это так и как я могу это исправить?
Спасибо!