簡體   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