微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取列名,其中包含python pandas中任何行的特定值

我想从整个数据库获取列名(假设数据库包含超过100行,超过50列),基于pandas中特定列中包含的特定值.

在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适用于DataFrames,您可以100%向量化:

df.columns[df.isin(['APPLE']).any()]  # df.isin([response])

要么,

df.columns[df.eq(response).any()]

    索引([‘A’],dtype =’对象’)

这是使用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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐