使用列表+字符串中的项迭代命名DataFrames



我有一个国家名称列表。。我有一个大的数据帧,其中一列是"国家"(是的,它在单词"国家"前后有一个空格)我想根据国家名称创建更小的数据帧

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注入。。。

最新更新