【问题标题】:Variable visibility issue with Pandas and IPythonPandas 和 IPython 的可变可见性问题
【发布时间】:2014-12-24 13:40:17
【问题描述】:

当我尝试按选定的索引值(在 IPython 会话中)过滤 DataFrame 时,我得到一个 NameError 异常。你可以看到validnumpy.arraylabpandas.DataFrame 对象。它们都已初始化并可访问。但是我不能把它们放在一起。这是错误:

In [51]: valid
Out[51]: 
array([38661, 44593, 38705, 38918, 38727, 38757, 38751, 38777, 38787,
       ...,    
       45328, 45337, 43645, 43694, 43701])

In [52]: lab
Out[52]: 
         0
39333   -1
39173   -1
42756   -1
39633   -1
38661   -1
44801   81
...    ...
39379   -1
39742   -1
44765  108
44279   -1
40584   -1
41047   -1
41833   98

[3299 rows x 1 columns]

In [53]: lab[lab.index.map(lambda x: x in valid)]
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/home/vitaly/progs/vnii_gochs/venv/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 lab[lab.index.map(lambda x: x in valid)]

/home/vitaly/progs/vnii_gochs/venv/lib/python2.7/site-packages/pandas/core/index.pyc in map(self, mapper)
   1558 
   1559     def map(self, mapper):
-> 1560         return self._arrmap(self.values, mapper)
   1561 
   1562     def isin(self, values, level=None):

/home/vitaly/progs/vnii_gochs/venv/lib/python2.7/site-packages/pandas/algos.so in pandas.algos.arrmap_int64 (pandas/algos.c:78469)()

/home/vitaly/progs/vnii_gochs/venv/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in <lambda>(x)
----> 1 lab[lab.index.map(lambda x: x in valid)]

NameError: global name 'valid' is not defined

这段代码有什么问题?

UPD: lab.pkl(pickle 格式),valid.npy(numpy 二进制格式)

【问题讨论】:

  • 您能否添加一个我们可以运行的最小示例来重现您的错误?
  • @cel,我已经发布了指向带有对象转储文件的链接。

标签: python pandas namespaces ipython


【解决方案1】:

不清楚您是尝试向lab 添加新列,还是尝试按valid 数组中指定的顺序获取值。要向lab 添加新列,您可以使用lab['new'] = valid。要获得根据valid 数组中的值排序的 Series 对象,您可以使用lab.loc[value]。如果您只想要原始 numpy 数组,请执行 lab.loc[value].values

【讨论】:

  • 我想获取由所选索引值组成的新 DataFrame 对象。为了得到我尝试过的那个
  • 我想获取由所选索引值组成的新 DataFrame 对象。为了得到那个我试图选择具有所需索引值的行(请参阅valid 数组)。最近我用你的第二种方法(从索引创建新列)取得了成功。但是,错误原因和异常类型目前还不清楚。
猜你喜欢
  • 2012-06-15
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多