我尝试将下面的两个数据帧与"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) 我希望能够将几行代码加载并运行到交互式调试器中,以确保代码正常工作.通过这样做,我不需要从代码的开头重新运行,这需要更长的时间.我尝试了两种方法,但都没有工作.来自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中反转控制台历史顺序以进行复制粘贴?
我正在寻找一种seaboarn通过指定fmt关键字在的热图上将“0.0045”显示为“0.45%”的方法:
sns.heatmap(data, annot=True, fmt='??')
Run Code Online (Sandbox Code Playgroud)
但是,我没有找到要使用的格式列表。在不同的示例之间搜索,我看到了“d”、“.2g”、“.1f”、“.1f%”。但不清楚我们在这里假设的约定是什么。
这是假设人们对格式格式有共同的理解吗?或者这出现在我错过的文档页面上?
我有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) 我正在使用mac,使用Pycharm版本2018.2.4社区版.
当我使用调试器运行调试会话并点击调试点时,我必须使用鼠标单击我的编辑器才能在编辑器上键入代码.如果我不这样做并直接敲击我的键盘,Mac会抱怨一些"bing"声音,表示键盘输入对任何应用程序都无效(我的意见).
如何在调试点时让我的Pycharm自动关注编辑器?或者至少关注调试器,以便我可以按ESC键专注于编辑器?
我想在pycharm中运行jupyter,但遇到错误:没有这样的内核名为python3.
我只安装了Anaconda(Python3 64位版本)并将其用作pycharm项目解释器.
......
感谢任何帮助!!
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'
我在Pycharm中使用Ipython。有没有办法隐藏整个笔记本?
更新:ctrl + shift + F仅显示搜索结果。双击结果不会导致光标跳到代码行。任何人都想阐明一点?
下面实施的更优雅的方式是什么?
我想将一个函数应用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) 为什么搜索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)