将字符串转换为代码
值得注意的点:
- 我是编程新手,正在测试各种方法以学习;
- 也就是说,我确定有更好的方法来实现我所要做的事情;
- 然而,我希望知道任何替代/更有效的方法;
- 我仍然想知道如何将字符串转换为代码,以使用这种技术实现我的目标。
到目前为止,我已经在论坛和谷歌上搜索了一些主题,其中包括使用eval
和exec
,但都无法使其在这里工作或精确回答我的问题。
场景
- 我有一个数据框:
london
,有23列 - 我想创建一个数据框,显示所有具有“NaN”值的行
- 我尝试使用
.isnull()
,但似乎只能逐个列地工作 - 我正在尝试通过使用
|
返回任何列中.isnull()
返回True
的行来实现我想要的结果
这是一个示例,只涉及两列:
london[(london['Events'].isnull() | london['Max Gust SpeedKm/h'].isnull())]
然而,我需要使用所有23列来实现这个结果,所以我尝试使用一些代码来完成它。
尝试的解决方案:
创建一个包含所有列标题的字符串,例如:london[(london['列标题'].isnull())后跟|和下一列
然后在上面的示例中使用此字符串,即:london[(字符串)]
我已成功使用以下方式创建所需的字符串:
string = []
for i in (london.columns.values):
string.append("london['" + i + "'].isnull()")
string.append(" | ")
del string[-1]
final_string = "".join(string)
最后,当我尝试实施最后一步时,我无法想出将这个字符串转换为可用代码的方法。
例如:
now = eval(final_string)
london[now]
导致了如下错误:
NotImplementedError:“Call”节点未实现
谢谢。
eval
来实现这个目的。你几乎永远不应该使用eval
。无论如何,我设法让一个类似的例子工作了。你使用的是哪个版本的pandas
? - juanpa.arrivillaga