小编Lis*_*isa的帖子

如何忽略pandas assert frame equal的索引比较

我尝试将下面的两个数据帧与"check_index_type"设置为False进行比较.根据文档,如果设置为False,则不应"检查Index类,dtype和inferred_type是否相同".我误解了文档吗?如何比较忽略索引并返回True以进行下面的测试?

我知道我可以重置索引,但不愿意.

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.testing.assert_frame_equal.html

from pandas.util.testing import assert_frame_equal
import pandas as pd
d1 = pd.DataFrame([[1,2], [10, 20]], index=[0,2])
d2 = pd.DataFrame([[1, 2], [10, 20]], index=[0, 1])
assert_frame_equal(d1, d2, check_index_type=False)


AssertionError: DataFrame.index are different
DataFrame.index values are different (50.0 %)
[left]:  Int64Index([0, 2], dtype='int64')
[right]: Int64Index([0, 1], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

python pandas

17
推荐指数
3
解决办法
5543
查看次数

在Pycharm中如何将代码加载到交互式调试器?

我希望能够将几行代码加载并运行到交互式调试器中,以确保代码正常工作.通过这样做,我不需要从代码的开头重新运行,这需要更长的时间.我尝试了两种方法,但都没有工作.来自R和Matlab,我更喜欢这个功能.有人可以建议吗?

方法1:根据pycharm的交互式shell调试,可以将pycharm编辑器中输入的代码加载到交互式调试器中

1> set a debugging point
2> highlight the code you want to load to Python console
3> alt+shift+E
Run Code Online (Sandbox Code Playgroud)

当我按照以下步骤操作时:我设置调试点,调试代码以触发调试点,然后选择代码按alt + shift + e.而不是将代码加载到调试控制台,它默认加载到python控制台.我无法访问我想在python控制台上下文中调试的变量和包.

我必须最小化python控制台,然后再次运行它.有时它在调试器控制台中运行.以下答案建议"选择您要定位的控制台".步骤是什么?你点击调试器?然后选择代码并按atl + shift + e?我试过,它不起作用.

编辑:找到官方文档,但不是很有帮助:https: //www.jetbrains.com/help/pycharm/2017.1/loading-code-from-editor-into-console.html

在此输入图像描述

方法2:直接在交互式调试器控制台中键入和试验代码.但是,没有简单的方法将代码(多行)带回编辑器.控制台历史记录从最新到最旧自动排序.从控制台历史记录复制时,您将最后一行所需代码作为编辑器中的第一行.见下面的主题,我有同样的问题. 如何在pycharm中反转控制台历史顺序以进行复制粘贴?

python pycharm

15
推荐指数
2
解决办法
1789
查看次数

如何理解 Seaborn 的热图注释格式?

我正在寻找一种seaboarn通过指定fmt关键字在的热图上将“0.0045”显示为“0.45%”的方法:

sns.heatmap(data, annot=True, fmt='??')
Run Code Online (Sandbox Code Playgroud)

但是,我没有找到要使用的格式列表。在不同的示例之间搜索,我看到了“d”、“.2g”、“.1f”、“.1f%”。但不清楚我们在这里假设的约定是什么。

这是假设人们对格式格式有共同的理解吗?或者这出现在我错过的文档页面上?

python matplotlib seaborn

14
推荐指数
2
解决办法
2万
查看次数

必须使用某种集合调用索引:将列名称指定给dataframe

我有reweightTarget以下内容,我想将其转换为pandas Dataframe.但是,我得到以下错误:

TypeError:必须使用某种集合调用Index(...),传递't'

如果我删除columns='t',它工作正常.任何人都可以解释一下发生了什么?

reweightTarget


Trading dates
2004-01-31    4.35
2004-02-29    4.46
2004-03-31    4.44
2004-04-30    4.39
2004-05-31    4.50
2004-06-30    4.53
2004-07-31    4.63
2004-08-31    4.58
dtype: float64
pd.DataFrame(reweightTarget, columns='t')


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-334-bf438351aaf2> in <module>()
----> 1 pd.DataFrame(reweightTarget, columns='t')

C:\Anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
    253             else:
    254                 mgr = self._init_ndarray(data, index, columns, dtype=dtype,
--> 255                                          copy=copy)
    256         elif isinstance(data, (list, types.GeneratorType)):
    257             if isinstance(data, types.GeneratorType):

C:\Anaconda3\lib\site-packages\pandas\core\frame.py in _init_ndarray(self, values, index, columns, …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

13
推荐指数
2
解决办法
4万
查看次数

Pycharm:当遇到调试点时如何关注编辑器

我正在使用mac,使用Pycharm版本2018.2.4社区版.

当我使用调试器运行调试会话并点击调试点时,我必须使用鼠标单击我的编辑器才能在编辑器上键入代码.如果我不这样做并直接敲击我的键盘,Mac会抱怨一些"bing"声音,表示键盘输入对任何应用程序都无效(我的意见).

如何在调试点时让我的Pycharm自动关注编辑器?或者至少关注调试器,以便我可以按ESC键专注于编辑器?

我在设置中选择了"在断点处聚焦应用程序". 在此输入图像描述

python pycharm

12
推荐指数
1
解决办法
206
查看次数

jupyter:没有名为python3的内核

我想在pycharm中运行jupyter,但遇到错误:没有这样的内核名为python3.

我只安装了Anaconda(Python3 64位版本)并将其用作pycharm项目解释器.

在此输入图像描述

......

在此输入图像描述

Jupyter kernelspec列表显示如下: 在此输入图像描述

感谢任何帮助!!

pycharm anaconda jupyter

10
推荐指数
1
解决办法
4798
查看次数

如何在unittest中使用assert_frame_equal

unittest包新手.我正在尝试通过以下代码验证函数返回的DataFrame.即使我将输入硬编码assert_frame_equal为等于(pd.DataFrame([0,0,0,0])),单位测试仍然失败.有人想解释它为什么会发生吗?

import unittest
from pandas.util.testing import assert_frame_equal
class TestSplitWeight(unittest.TestCase):
    def test_allZero(self):
        #splitWeight(pd.DataFrame([0,0,0,0]),10)
        self.assert_frame_equal(pd.DataFrame([0,0,0,0]),pd.DataFrame([0,0,0,0]))

suite = unittest.TestLoader().loadTestsFromTestCase(TestSplitWeight)
unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)
Error: AttributeError: 'TestSplitWeight' object has no attribute 'assert_frame_equal'

python unit-testing pandas python-unittest

10
推荐指数
2
解决办法
7552
查看次数

在Pycharm中搜索Ipython notebook?

我在Pycharm中使用Ipython。有没有办法隐藏整个笔记本?

更新:ctrl + shift + F仅显示搜索结果。双击结果不会导致光标跳到代码行。任何人都想阐明一点?

python ipython pycharm

8
推荐指数
0
解决办法
330
查看次数

将函数应用于数据帧的每一行

下面实施的更优雅的方式是什么?

我想将一个函数应用my_function到一个数据框,其中数据框的每一行都包含函数的参数.然后我想将函数的输出写回数据帧行.

results = pd.DataFrame()
for row in input_panel.iterrows():
    (index, row_contents) = row
    row_contents['target']  = my_function(*list(row_contents))
    results = pd.concat([results, row_contents])
Run Code Online (Sandbox Code Playgroud)

python apply pandas

8
推荐指数
1
解决办法
3332
查看次数

方法解析顺序 MRO

为什么搜索B之后,没有进一步搜索Y OR z而是去搜索A?

Y是A的父级,如果应该先搜索A,但Y是B的父级,所以应该先搜索Y,为什么这不会抛出MRO错误?

有人可以解释一下这个查找是如何工作的吗?

class X(object):pass
class Y(object): pass
class Z(object): pass
class A(X,Y): pass
class B(Y,Z):pass
class M(B,A,Z):pass
print M.__mro__
Run Code Online (Sandbox Code Playgroud)

给出

(<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <type 'object'>)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python method-resolution-order

5
推荐指数
1
解决办法
2171
查看次数