我有一个国家名称列表。。我有一个大的数据帧,其中一列是"国家"(是的,它在单词"国家"前后有一个空格)我想根据国家名称创建更小的数据帧
cleaned_df[cleaned_df[' COUNTRY ']==asia_country_list[1]]
似乎太长的命令无法实现?不过它确实有效。
现在,
str("%s_data" % (asia_country_list[1]))
给出
'Taiwan_data'
但当我把上面两个结合起来时:
str("%s_data" % (asia_country_list[1])) = cleaned_df[cleaned_df[' COUNTRY ']==asia_country_list[1]]
我得到:
SyntaxError: can't assign to function call
很高兴学习其他方法来实现这一点。。感谢vm
我认为你不应该这样做,但如果你真的需要它:
exec(str("%s_data" % (asia_country_list[1])) +"= cleaned_df[cleaned_df[' COUNTRY ']==asia_country_list[1]]")
应该起作用。使用字典可能会解决你的问题
D={}
D["%s_data" % (asia_country_list[1]))]=cleaned_df[cleaned_df[' COUNTRY ']==asia_country_list[1]]]
EDIT:第一个解决方案是个坏主意:exec是一个危险的命令,如果有一列名为"del cleaned_df",你会实际执行它,它可能会具有破坏性。通常情况下,我猜空格在您的情况下是个问题。这有点像SQL注入。。。