[英]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
。 p
是for
循环中的变量名,但 function scope 不同,因此您的 function 无权访问p
。
您还应该像我上面所做的那样在变量前面加上@
符号,让pandas
知道它是一个变量,而不是字符串文字“平台”。 从文档中:
您可以通过在变量前面加上
@a + b
之类的“@”字符来引用环境中的变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.