如何在Python中将字符串转换为代码?

时间:2016-07-03 00:38:04

标签: python string pandas

将字符串转换为代码

值得注意的一点:

  • 我是编码新手,正在测试各种要学习的东西;
  • 即。是的,我确信有更好的方法来实现我想做的事情;
  • 我想知道任何替代/更有效的方法;
  • 我还想知道如何将字符串转换为代码以实现我的目标

到目前为止,我已经浏览了论坛和谷歌,并看到了一些关于此的主题,我无法在这里做任何工作,或者从我的角度准确回答问题,包括使用evalexec

情景

  • 我有一个数据框: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' nodes are not implemented

提前谢谢。

2 个答案:

答案 0 :(得分:4)

这是使用rows值选择数据框中NaN的最简单方法:

df[pd.isnull(df).any(axis=1)]

答案 1 :(得分:2)

string = []
for i in (london.columns.values):
    string.append(london[i].isnull())
london[0<sum(string)]

由于您只有1和0,并且您正在寻找至少1个1,那么您只需将1,0&#39;添加到您的列表中然后对它们求和。如果金额大于1,你的if将变为1,否则你的if将变为0,所以你可以在那之后做伦敦指数。