小编GoC*_*rry的帖子

与NaNs的元素比较相等

如果我运行以下代码:

dft1 = pd.DataFrame({'a':[1, np.nan, np.nan]})
dft2 = pd.DataFrame({'a':[1, 1, np.nan]})
dft1.a==dft2.a
Run Code Online (Sandbox Code Playgroud)

结果是

0     True
1    False
2    False
Name: a, dtype: bool
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到结果

0     True
1    False
2     True
Name: a, dtype: bool
Run Code Online (Sandbox Code Playgroud)

即,np.nan == np.nan评估为True.

我认为这是基本的功能,我一定要问一个重复的问题,但我花了很多时间在SO或Google中搜索,但找不到它.

python numpy nan dataframe pandas

8
推荐指数
2
解决办法
323
查看次数

如何解决 Python Pandas DataFrame 的“越界纳秒时间戳”错误?

以下代码抛出“ Out of bounds nanosecond timestamp: 1452-04-15 00:00:00 ”错误。如果我将日期字符串替换为某些最近的日期(例如 2017-01-01),则相同的代码有效。

df=pd.DataFrame({'Date':np.arange('1452-04-15', '1519-05-02', dtype='datetime64[D]')})
Run Code Online (Sandbox Code Playgroud)

此示例代码用于提供一种简单的方法来重现错误。我真正想做的是将包含这些非常早的日期的 csv 读取到数据框中,并将字符串日期转换为 np.datetime64[D] 或任何类似的日期格式。

python date dataframe pandas

6
推荐指数
1
解决办法
6786
查看次数

如何在一个具有相同颜色但不同线条样式的图形中绘制两个pandas DataFrame?

假设我有以下两个数据帧:

df1 = pd.DataFrame(np.random.randn(100, 3),columns=['A','B','C']).cumsum()
df2 = pd.DataFrame(np.random.randn(100, 3),columns=['A','B','C']).cumsum()
Run Code Online (Sandbox Code Playgroud)

df2情节

df1情节

我的问题是,如何在一个图中绘制它们,以便:

  1. 三个系列的df1和df2仍然是如上所述的蓝色,橙色和绿色线.
  2. df1的三个系列是实线
  3. 三个系列的df1是虚线

目前我最接近的是以下内容:

ax = df1.plot(style=['b','y','g'])
df2.plot(ax=ax, style=['b','y','g'], linestyle='--')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法获取DataFrame.plot()默认使用的颜色代码?或者还有其他更好的方法来实现我想要的吗?理想情况下,我不想style使用参数指定任何颜色代码,但始终使用默认颜色.

python matplotlib dataframe pandas

4
推荐指数
3
解决办法
1418
查看次数

有没有办法为 Jupyter Notebook 会话设置 PYTHONHASHSEED?

我想禁用Python散列函数随机化。根据此线程(无法通过模块查看或修改 PYTHONHASHSEED 的值),通过os.environ['PYTHONHASHSEED']在运行时设置来设置 PYTHONHASHSEED不起作用。运行 Jupyter Notebook 时如何将 PYTHONHASHSEED 设置为固定值?

python environment-variables jupyter-notebook

3
推荐指数
1
解决办法
632
查看次数

python 函数中不允许空行?

(A) 这有效:

def func():
    x = 1
    print(x)    
    return
Run Code Online (Sandbox Code Playgroud)

(B) 这不起作用:

def func():
    x = 1

    print(x)    
    return
Run Code Online (Sandbox Code Playgroud)

(C) 这也不起作用:(这里我使用“_”来表示空格)

def func():
    x = 1
____
    print(x)    
    return
Run Code Online (Sandbox Code Playgroud)

(D) 这有效:

def func():
    x = 1
____# some comment
    print(x)    
    return
Run Code Online (Sandbox Code Playgroud)

在 (B) 和 (C) 中,我都收到以下错误:

  • NameError: 名称 'x' 未定义
  • SyntaxError: 'return' 外部函数

我正在使用 Eclipse 和 PyDev 插件。Python 版本是 3.5,PyDev 版本是 4.5。

- - - - - 更新 - - - - -

  1. 该问题在 Jupyter Notebook 和 PyCharm 中无法重现。

  2. 在 Eclipse …

python syntax

2
推荐指数
1
解决办法
1628
查看次数

pandas.DataFrame.droplevel是否有相反的功能(如keeplevel)?

pandas.DataFrame.droplevel我可以使用级别名称或索引在某些位置保留多级索引/列的某些功能吗?

例:

df = pd.DataFrame([
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12],
        [13, 14, 15, 16]
    ], columns=['a','b','c','d']).set_index(['a','b','c']).T


a   1   5   9   13
b   2   6   10  14
c   3   7   11  15
d   4   8   12  16
Run Code Online (Sandbox Code Playgroud)

以下两个命令都可以返回以下数据帧:

df.droplevel(['a','b'], axis=1)
df.droplevel([0, 1], axis=1)

c   3   7   11  15
d   4   8   12  16
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个“ keeplevel”命令,以便以下两个命令都可以返回以下数据帧:

df.keeplevel(['a','b'], axis=1)
df.keeplevel([0, 1], axis=1)

a   1   5   9   13
b   2   6   10  14
d   4   8 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

2
推荐指数
1
解决办法
56
查看次数

从List <T>继承的类型不能与List <T>一起分配

例:

        public class ListInheritanceTest
        {
            public void Test1()
            {
                List<string> list = new List<string>();
                MyList myList = list;
            }
        }
        public class MyList : List<string>
        {
        }
Run Code Online (Sandbox Code Playgroud)

MyList myList = list有错误"无法将类型'System.Collections.Generic.List'隐式转换为'ConsoleTest.MyList'"

我怎样才能解决这个问题?谢谢.

----编辑----
我不是在问它为什么会出错.我想知道使分配工作的解决方法是什么.上面的代码只是一个简化的例子.目的是List<SomeType>在我的代码中将all转换为MyList,而不会引入任何向后不兼容.

---第二次编辑----

让我重新解释一下这个问题.假设我在上面的代码中以相同的方式定义了MyList.分配List<string>给MyList 的最简单方法是什么.

我知道

            foreach(var item in list)  
            mylist.Add(item)  
Run Code Online (Sandbox Code Playgroud)

总是工作.只是寻找更优雅的东西.

c# generics inheritance class

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

如何在 Python 中创建带有过滤器的交互式图表(例如 Excel 数据透视图)

首先让我描述一下我试图用 Python 重现的 Excel 数据透视图。

以下是生成示例数据集的代码:

# The code should work in Python 3.7 and pandas 0.24 or above
import pandas as pd
years = [i for i in range(2015,2021)]
countries = ['US', 'CA', 'JP', 'MX', 'IT']
months = [i for i in range(1,13)]

idx = pd.MultiIndex.from_product([years, countries, months], names=['year', 'country', 'month'])
df = pd.DataFrame(np.random.randn(len(idx), 1),columns=['val'], index=idx).sort_index()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我可以将df.to_clipboard()其粘贴到 Excel 中,如下所示:

在此输入图像描述

然后我可以根据数据插入数据透视图,并以某种方式配置它,以便我可以按年份和国家/地区查看每月线图。该数据透视图是“交互式”的,因为通过“年份”和“国家/地区”下拉控件,我可以以任何我想要的方式方便地过滤数据,例如“显示 JP 的所有年份”或“显示 2020 年的所有国家/地区” ”。

在此输入图像描述

我的问题是
有没有简单的方法可以在 Python 中创建这样的交互式绘图?我使用 Jupyter Notebook 来处理数据并做了很多这样的探索性研究。我不喜欢每次想要可视化数据时都必须将数据复制到 Excel 中。在Python中,我可以做一些愚蠢的事情,比如df.loc[(2015, 'US'),:].plot() …

python plot data-visualization pandas jupyter-notebook

0
推荐指数
1
解决办法
4495
查看次数