这似乎是一个简单的问题,但是我以前没问过(this和this很近,但答案并不好)。
问题是:如果要在df中搜索值 somewhere (我不知道它在哪一列中),然后返回所有具有匹配项的行。
最古怪的方式是什么?还有什么比:
for col in list(df):
try:
df[col] == var
return df[df[col] == var]
except TypeError:
continue
?
答案 0 :(得分:5)
您可以在整个DataFrame上执行相等比较:
df[df.eq(var1).any(1)]
另一个选择是使用numpy
比较:
df[(df.values.ravel() == var1).reshape(df.shape).any(1)]
答案 1 :(得分:2)
您应该使用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
答案 2 :(得分:-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("")