小编pro*_*der的帖子

如何在多个groupby之后将pandas数据从索引移动到列

我有以下pandas数据帧:

dfalph.head()

token    year    uses  books
  386   xanthos  1830    3     3
  387   xanthos  1840    1     1
  388   xanthos  1840    2     2
  389   xanthos  1868    2     2
  390   xanthos  1875    1     1
Run Code Online (Sandbox Code Playgroud)

我使用重复令牌聚合行,并且如下所示:

dfalph = dfalph[['token','year','uses','books']].groupby(['token', 'year']).agg([np.sum])
dfalph.columns = dfalph.columns.droplevel(1)
dfalph.head()

               uses  books
token    year       
xanthos  1830    3     3
         1840    3     3
         1867    2     2
         1868    2     2
         1875    1     1
Run Code Online (Sandbox Code Playgroud)

我没有在索引中使用'token'和'year'字段,而是希望将它们返回到列并具有整数索引.

python multi-index pandas pandas-groupby

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

从函数中显示IPython笔记本中的SVG

在IPython笔记本中,以下代码显示单元格下方的SVG:

from IPython.display import SVG
SVG(url='http://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg')
Run Code Online (Sandbox Code Playgroud)

以下内容不显示:

from IPython.display import SVG
def show_svg():
    SVG(url='http://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg')
Run Code Online (Sandbox Code Playgroud)

有没有办法在函数(或类)中显示SVG?

python svg ipython-notebook

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

Pyplot:曲线下的垂直渐变填充?

我想知道是否有一种方法可以在垂直渐变下填充pyplot曲线,就像在这个快速模型中一样:

图片

我在StackOverflow上发现了这个黑客,我不介意多边形,如果我能弄清楚如何使颜色贴图垂直:如何在Python matplotlib中的曲线下填充彩虹色

python gradient matplotlib

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

Pandas根据布尔数组修改列值

我知道如何使用applynp.where基于另一列的值创建新列,但是有选择地更改现有列的值的方法正在逃避我; 我怀疑df.ix是参与?我接近了吗?

例如,这是一个简单的数据帧(我的数据行有数万行).如果名称以字母'e'结尾,我想更改'flag'列中的值(假设为'Blue'):

>>> import pandas as pd
>>> df = pd.DataFrame({'name':['Mick', 'John', 'Christine', 'Stevie', 'Lindsey'], \
        'flag':['Purple', 'Red', nan, nan, nan]})[['name', 'flag']]
>>> print df

        name    flag
0       Mick  Purple
1       John     Red
2  Christine     NaN
3     Stevie     NaN
4    Lindsey     NaN
[5 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)

我可以根据我的标准制作一个布尔系列:

>boolean_result = df.name.str.contains('e$')
>print boolean_result
0    False
1    False
2     True
3     True
4    False
Name: name, dtype: bool
Run Code Online (Sandbox Code Playgroud)

我只需要关键步骤来获得以下结果:

>>> print result_wanted
        name    flag …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何让 d3 将缺失值视为 null 而不是零?

我的示例的 JSBin 和代码

我有一个包含不同轴上两个变量的折线图:

在此输入图像描述

.csv 文件在蓝色系列的开头和结尾处缺少值(“关闭”):

date,open,close
1-May-89,161,
1-May-90,170,
1-May-91,137,
1-May-92,144,91.9
1-May-93,91,91.8

(...)

1-May-11,12,75.7
1-May-12,7,68.2
1-May-13,15,
Run Code Online (Sandbox Code Playgroud)

末尾的缺失值已得到正确处理(该行被截断),但前三个值被视为零值。我怎样才能让蓝色的“关闭”系列从 1992 年开始?

d3.js

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

熊猫交叉表中的加权结果

我想使用第三列来加权熊猫交叉表中的结果。

例如,以下内容:

import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'bar'],
                   'B': [1, 1, 0, 0, 0],
                   'weight': [2, 3, 4, 5, 6]})
print(pd.crosstab(df.A, df.B))
Run Code Online (Sandbox Code Playgroud)

结果是:

B    0  1
A        
bar  2  1
foo  1  1
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

B     0  1
A        
bar  11  3
foo   4  2
Run Code Online (Sandbox Code Playgroud)

python crosstab scipy pandas statsmodels

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

如何将pandas列列表传递给pyplot图表?

这是我的代码,它可以正常工作:

df = pd.DataFrame({
    'foo' : [1, 2, 7, 2],
    'bar' : [3, 1, 3, 2],
    'spam' : [5, 2, 1, 0]
    })

x = range(len(df.foo))

fig, ax = plt.subplots()
ax.stackplot(x, df.foo, df.bar, df.spam)
# plt.savefig('stackedarea.png')
plt.show()
Run Code Online (Sandbox Code Playgroud)

堆积面积图

我的问题是,我如何传递一个列表,所以我不必明确键入每一列(Df.foo,df.bar ...)?

我仍然是lambda函数和列表推导的初学者,我怀疑其中一个是必需的.

(1)我的第一个想法,是传递一个列名列表

columnlist = ['foo', 'bar']
# snip
ax.stackplot(x, #something_goes_here) #I tried df[columnlist[, no joy
Run Code Online (Sandbox Code Playgroud)

(2)我的第二个想法,传递一列列:

columnlist = ['foo', 'bar']
#here is where I don't know how to transform column list so it becomes
# passedlist, where passedlist = [df.foo, df.bar] …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

pandas long-form表嵌套json

我经历过的to_jsonjson.dumps文档,并试图各种指标和类型的字典的,而且我迷路......我可以创建类似字典的名称-值对,但不是嵌套的JSON我需要的那种类型.

我开始使用这种格式的pandas数据帧:

  level_1 level_2 level_3  numeric
0   alpha     one       a        1
1   alpha     one       b        2
2   alpha     two       a        3
3   alpha     two       b        4
4    beta     one       a        5
5    beta     one       b        6
6    beta     two       a        7
7    beta     two       b        8
Run Code Online (Sandbox Code Playgroud)

我需要一个具有以下格式的JSON文件:

{"alpha": {"one": {"a": 1, "b": 1}, "two": {"a": 3, "b": 4 etc...
Run Code Online (Sandbox Code Playgroud)

python json pandas

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

Decorator返回函数对象而不是包装函数的输出

道歉,我只能想象StackOverflow上到处都是人,但仍然没有完全掌握装饰者.

我试图装饰一系列与os相关的函数,这样如果有任何异常,例如FileNotFoundError或PermissionError,用户可以解决问题,并再试一次.

所以我已经创建了这个玩具函数和装饰器,我不明白我在哪里没有正确地跟踪我一直在阅读的示例装饰器,而且我无法通过它推理我的方式:

from functools import wraps

def continual_retry(func):
    def retry_decorated(*args, **kwargs):
        @wraps(func)
        def func_wrapper(*args, **kwargs):
            while not stop:
                try:
                    func(*args)
                    stop = True
                except Exception as e:
                    print(f'Could not perform function {func.__name__}')
                    print(f' with args {repr(args)}')
                    print(f' due to error {e.class__}')    
                    redo = input('Retry (y/n)? ')      
                    if redo.lower() != 'y':
                        print('Exiting program due to error and user input')
                        sys.exit(0)
        return func_wrapper
    return retry_decorated

@continual_retry
def divide(a, b):
    return a/b
Run Code Online (Sandbox Code Playgroud)

当我运行该函数时divide,结果如下:

>>> divide(1, 2)
<function __main__.divide(a, b)>
Run Code Online (Sandbox Code Playgroud)

我期待的结果 …

python decorator python-decorators

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