在dask环境中将变量转换为字符串

时间:2019-04-10 04:20:16

标签: python dataframe dask

我正在尝试在Route::get('complaintSuggestion', function() { return view('patials.complaintSuggestion'); })->middleware('auth');环境中将变量名转换为字符串。这个code在正常的python环境中可以正常工作。但是,在创建dask数据框后运行该代码时,该代码不起作用。代码如下。

dask

编辑

from dask.distributed import Client
client = Client()
import dask.dataframe as dd

import numpy as np
import pandas as pd

df = pd.DataFrame({'A':['ant','ant','cherry', 'dog', 'ant'], 'B':['animal','animal1', 'fruit', 'animal', 'animal'], 'C':['small','small1','small', 'big', np.nan]})

ddf = dd.from_pandas(df, npartitions=2)

ddf.head()

#The below code gives an error because of the above code (Please see the **error** below). The below code on its own runs fine.

my_var = [2,'wew','ewwew','44']
[ k for k,v in locals().items() if v == my_var][0]

错误在下面。

# The expected output. It works on jupyter notebook without any modules 
# loaded. (It is the name of the list)
out []: 'my_var' 

在这个问题上,谁能帮助我。

谢谢

迈克尔

1 个答案:

答案 0 :(得分:2)

您的代码是一件很奇怪的事情!由于您遍历所有变量,因此,如果发生的事情取决于定义的变量,您应该不会感到惊讶。特殊情况来自于询问是否'wew' == df,并且数据帧对相等意味着什么有非常具体的理解。对于pandas数据框也可能发生这种情况,或者对于具有equals的复杂实现的任何情况也是如此。

您可能只想对字符串进行测试,因为您知道要查找的内容:

[k for k, v in locals().items() if isinstance(v, str) and v == my_var][0]