我想根据 pandas 中特定列中包含的特定值从整个数据库中获取列名(假设数据库包含超过 100 行和超过 50 列)。
在 Bkmm3(来自印度的成员)的帮助下,我在数字术语上取得了成功,但在字母术语上失败了。我试过的方法是这样的:
df = pd.DataFrame({'A':['APPLE','BALL','CAT'],
'B':['ACTION','BATMAN','CATCHUP'],
'C':['ADVERTISE','BEAST','CARTOON']})
response = input("input")
for i in df.columns: if(len(df.query(i + '==' + str(response))) > 0):
print(i)`
然后输出出现错误:
Traceback (most recent call last): NameError: name 'APPLE' is not defined
非常感谢你们的任何帮助,谢谢。 . .
最佳答案
isin
/eq
适用于数据帧,您可以 100% 对其进行矢量化:
df.columns[df.isin(['APPLE']).any()] # df.isin([response])
或者,
df.columns[df.eq(response).any()]
Index(['A'], dtype='object')
这是使用 DataFrame.eval
和 np.logical_or
的迂回方式(你是在列上循环):
df.columns[
np.logical_or.reduce(
[df.eval(f"{repr(response)} in {i}") for i in df]
)]
Index(['A'], dtype='object')
关于python - 获取在 python pandas 中的任何行中包含特定值的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923707/