繁体   English   中英

如何使用 python 中的 function 将字符串列表一一传递给 query()?

[英]How to pass a list of strings one by one to query() using a function in python?

我想将列的每个唯一值一一传递给用户定义的 function 并获得结果。 唯一值是字符串,function 基于 query()。 下面是我是如何做到的,但它不起作用。 即我不能将“u”传递给查询。 这段代码有什么问题? 提前谢谢

def score_effect(platform):
    df = data.query('platform=="p"')[['sum_of_sales', 'critic_score', 'user_score']]
    plt.figure(figsize=(17,10))
    plt.subplot(1,2,1)
    sns.scatterplot(data=df, x='sum_of_sales', y='critic_score')
    plt.subplot(1,2,2)
    sns.scatterplot(data=df, x='sum_of_sales', y='user_score')
    plt.show()
 
    critic_corr = df.corr().iloc[0,1]
    user_corr = df.corr().iloc[0,2]
    print('Correlation between critic-reviews and sales =', critic_corr)
    print('Correlation between user-reviews and sales =', user_corr)
 
    if critic_corr>0.7:
 
        print('There is a POSITIVE correlation between  critic-reviews and sales')
    else:
        print('There is no significant correlation between critic-reviews and sales')
    if  user_corr>0.7:
        print('There is a POSITIVE correlation between  user-reviews and sales')
    else:
        print('There is no significant correlation between user-reviews and sales')
 
 
 
for p in data['platform'].unique():
    print('Result for:', p)
    score_effect(p)
    print('***************************')

看起来你应该更换

data.query('platform=="p"')

data.query('platform == @platform')

对于初学者。 您的 function 的论点是平台,而不是p pfor循环中的变量名,但 function scope 不同,因此您的 function 无权访问p

您还应该像我上面所做的那样在变量前面加上@符号,让pandas知道它是一个变量,而不是字符串文字“平台”。 文档中

您可以通过在变量前面加上@a + b之类的“@”字符来引用环境中的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM