繁体   English   中英

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

[英]How do I convert a string into code in Python?

将字符串转换为代码

值得注意的要点:

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

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

情景

  • 我有一个数据框: london有23列
  • 我想创建一个数据框,显示所有具有'NaN'值的行
  • 我曾尝试使用.isnull() ,但它似乎一次只能处理一个列
  • 我试图通过使用|来实现我想要的结果 返回.isnull()返回True任何列中的任何行

仅使用两列的一个示例是:

london[(london['Events'].isnull() | london['Max Gust SpeedKm/h'].isnull())]

但是,我需要使用所有23列来实现此结果,因此我尝试使用一些代码来完成此操作。

试图解决方案

  • 创建包含所有列标题的字符串
  • ie london[(london[' Column Header '].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

先感谢您。

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

df[pd.isnull(df).any(axis=1)]
string = []
for i in (london.columns.values):
    string.append(london[i].isnull())
london[0<sum(string)]

由于你只有1和0而且你正在寻找至少1个1,那么你可以在列表中添加1,0,然后将它们相加。 如果总和超过1你的if会转1,否则你的if会变为0所以你可以在那之后做伦敦指数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM