Это кажется простым вопросом, но я не мог найти его раньше (это и это близки, но ответы не очень хорошие).
Вопрос в том, хочу ли я найти значение где-то в моем df (я не знаю, в каком столбце оно находится) и вернуть все строки с совпадением.
Какой самый пандийский способ сделать это? Что может быть лучше, чем:
for col in list(df):
try:
df[col] == var
return df[df[col] == var]
except TypeError:
continue
?
все строки с совпадением
@coldspeed правда? "пандаик" вместо "пандабл"? ;)
Ну, «пандайк» - это то, что я знаю, как его называли разработчики pandas (например, Энди Хайден), но вы можете называть его как хотите, я уверен, что синонимы разрешены: D
С 2020 года он теперь должен называться Pandemic вместо «Pandaic» или «Pandorable».






Вы должны использовать isin, это вернуть столбец, нужно проверить строку холодным ответом :-)
df.isin(['bal1']).any()
A False
B True
C False
CLASS False
dtype: bool
Или
df[df.isin(['bal1'])].stack() # level 0 index is row index , level 1 index is columns which contain that value
0 B bal1
1 B bal1
dtype: object
Думаю, это должен быть df[df.isin(['bal1']).any(1)]
Это должен быть правильный ответ, правда ... другой быстрее или что-то в этом роде?
Вы можете выполнить сравнение равенства для всего DataFrame:
df[df.eq(var1).any(1)]
Вы можете попробовать приведенный ниже код:
import pandas as pd
x = pd.read_csv(r"filePath")
x.columns = x.columns.str.lower().str.replace(' ', '_')
y = x.columns.values
z = y.tolist()
print("Note: It take Case Sensitive Values.")
keyWord = input("Type a Keyword to Search: ")
try:
for k in range(len(z)-1):
l = x[x[z[k]].str.match(keyWord)]
print(l.head(10))
k = k+1
except:
print("")
Спасибо за это. Это сработало как шарм @ajay singh :-)
Если совпадений больше 1, что вы хотите вернуть?