小编jim*_*iat的帖子

python pandas - 使用 for 循环编辑多个 DataFrame

考虑以下 2 个包含 3 个字典和 3 个空 DataFrame 的列表

dict0={'actual': {'2013-02-20 13:30:00': 0.93}}
dict1={'actual': {'2013-02-20 13:30:00': 0.85}}
dict2={'actual': {'2013-02-20 13:30:00': 0.98}}
dicts=[dict0, dict1, dict2]

df0=pd.DataFrame()
df1=pd.DataFrame()
df2=pd.DataFrame()
dfs=[df0, df1, df2]
Run Code Online (Sandbox Code Playgroud)

我想通过使用以下行递归地修改循环内的 3 个数据帧:

for df, dikt in zip(dfs, dicts):
    df = df.from_dict(dikt, orient='columns', dtype=None)
Run Code Online (Sandbox Code Playgroud)

但是,当尝试在循环之外检索 df 的实例 1 时,它仍然是空的

print (df0)
Run Code Online (Sandbox Code Playgroud)

将返回

Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)

当从 for 循环中打印 df 时,我们可以看到数据已正确附加。

如何制作循环以便可以在循环之外打印 3 个 dfs 及其更改?

python pandas

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

Pandas - Python:Apply() 和 if/then 逻辑

我有以下数据框:

example  = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0], 
                         "value": [125,130,80,8,150,251,18], 
                         "result":[np.NaN for _ in range(7)]})
Run Code Online (Sandbox Code Playgroud)

我想用 cummin() 和 cummax() 执行以下操作:

example["result"].apply(lambda x : x= example["value"].cummax() if example["dirr"]==1
                           else x= example["value"].cummin() if example["dirr"]==-1
                           else x= NaN if if example["dirr"]==0
                              )
Run Code Online (Sandbox Code Playgroud)

这是返回:error: invalid syntax

谁能帮我纠正一下吗?

这将是预期的输出:

example  = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0], 
                         "value": [125,130,80,8,150,251,18], 
                         "result":[125, NaN, 80, 8, 150, 8, NaN]})
Run Code Online (Sandbox Code Playgroud)

编辑:

因此,根据 @su79eu7k 的答案,以下函数将执行以下操作:

def calc(x):
    if x['dirr'] == 1:
        return np.diag(example["value"].cummax())
    elif x['dirr'] == -1:
        return np.diag(example["value"].cummin())
    else:
        return np.nan
Run Code Online (Sandbox Code Playgroud)

我应该能够将其推入 lambda,但仍然被语法错误阻止......我仍然没有看到?

example["result"]=example.apply(lambda x : …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Python:Jupyter Notebook中的漂亮打印

我想在Jupyter Notebook中漂亮地打印字典。

我正在使用以下内容:

import pprint
stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
stuff.insert(0, stuff[:])
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(stuff)
Run Code Online (Sandbox Code Playgroud)

但是,按Shift + Enter时,没有任何[out]单元格出现(即,我看不到漂亮的打印输出)

在此处输入图片说明

知道为什么会这样吗/为了看到漂亮的打印输出,我应该改变什么?


编辑:实际上这是一个python 2.7问题-它在3.x中正常工作。有没有人在python 2.7上试用过它,并且看到它起作用了?

python pretty-print python-2.x python-2.7 jupyter-notebook

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

Python NLTK - 创建自己的同义词集

使用 python NLTK 创建自己的同义词/同义词库/同义词集的最佳方法是什么?例如 - 在金融领域:

US
synonyms: United States, Washington, 
hyponyms: Wall Street
meronym: dollar
Run Code Online (Sandbox Code Playgroud)

ETC。

简单地创建一个类似于 wordnet 但更适合我的目的的同义词集。

我计划开始手动创建它,然后在我清楚创建步骤后实施一种算法来完成它。

但首先我需要了解这样一个语料库的原理。查看 Wordnet 语料库中的文件,我找到以下文件列表:

adj.exc  citation.bib  data.adj  data.noun  index.adj  index.noun   index.verb  LICENSE   README
adv.exc  cntlist.rev   data.adv  data.verb  index.adv  index.sense  lexnames    noun.exc  verb.exc
Run Code Online (Sandbox Code Playgroud)

这些文件的内容相当晦涩,对于理解它的工作原理确实没有帮助。所有见解均受到赞赏。谢谢

nlp nltk

5
推荐指数
0
解决办法
1271
查看次数

Python 散景工具提示文本格式

参考指南中提供的工具提示示例显示了以下格式示例:

hover.tooltips = [
    ("index", "$index"),
    ("(x,y)", "($x, $y)"),
    ("radius", "@radius"),
    ("fill color", "$color[hex, swatch]:fill_color"),
    ("foo", "@foo"),
    ("bar", "@bar"),
    ("baz", "@baz{safe}"),
    ("total", "@total{$0,0.00}"
Run Code Online (Sandbox Code Playgroud)

该3个例子{safe}{$0,0.00}"$color[hex, swatch]:fill_color"不明确:我在哪里可以找到他们的一些文件?

基本上我想了解什么是可能的,什么是不可能的。

目前(例如)我有 1 个输入,我们想格式化一个很长的字符串(它是一篇报纸文章),因此它只显示 x 前一个字符。

其他示例我有一个@datetime从日期时间索引检索其值的字段。目前,工具提示将该值显示为int64字符。如何使用格式化工具,例如Timestamp.strftime("%d-%m-%Y")以人类可读的格式显示日期时间?

但我想更清楚地了解散景的这方面的可能性/如何工作

python bokeh

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

Python - Asyncio - 将参数列表传递给使用 * 定义的函数

让我们考虑文档中的以下示例:

import asyncio

async def factorial(name, number):
    f = 1
    for i in range(2, number+1):
        print("Task %s: Compute factorial(%s)..." % (name, i))
        await asyncio.sleep(1)
        f *= i
    print("Task %s: factorial(%s) = %s" % (name, number, f))

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(
    factorial("A", 2),
    factorial("B", 3),
    factorial("C", 4),
))
loop.close()
Run Code Online (Sandbox Code Playgroud)

模块中的 Gather 函数如下所示:

asyncio.gather(*coros_or_futures, loop=None, return_exceptions=False)
Run Code Online (Sandbox Code Playgroud)

它一切正常,但对于我的现实生活中的问题,我需要传入的不是带有硬编码参数的函数的多样性,而是创建多个函数的某种形式的元组理解。

我试过:

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(
    [factorial(str(g),g) for g in range(3)]
))
loop.close()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。任何人都知道如何使用该收集函数来处理以编程方式创建的函数列表?

gather要清楚:该函数不是由我定义的,所以我不能从它的定义中删除 * 并简单地传递这样的参数列表。我需要“解压缩”列表,但我不知道如何。

python python-asyncio

5
推荐指数
2
解决办法
7020
查看次数

散景-向数据表添加标题

在Bokeh中,Python:

DataTable是唯一没有title属性的窗口小部件之一。

将标题添加到DataTable的正确pythonic方法是什么?

python-3.x bokeh

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

Python Decimal 不接受 getcontext() 精度修改

只是尝试基本的python Decimal 模块,它似乎不起作用(在 jupyter 笔记本中):

from decimal import *
getcontext().prec = 1

getcontext()
Run Code Online (Sandbox Code Playgroud)

返回Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

Decimal(0.111111)
Run Code Online (Sandbox Code Playgroud)

返回Decimal('0.11111100000000000143085543413690174929797649383544921875')

知道发生了什么事吗?

python decimal

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

Python,Pandas,Numpy:Date_range:将np.timedelta作为freq传递.争论

我有一个格式为numpy.timedelta(64)的时间增量:( value = numpy.timedelta64(30,'m')
这里是30分钟).

有没有办法将该值传递给pandas date_range的构造: pd.date_range(start_time, end_time, freq=value)

如果不是如何转换该值以便在date_range中传递它?我尝试value.astype('str')但它返回'0:30:00',它也不适合作为pd.date_range的参数.

python numpy pandas

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

Pandas:向仅包含 1 行的 DataFrame 添加 MultiIndex

我有一个小数据框,如下所示:

在此输入图像描述

和一个元组,例如:(Timestamp('2009-02-27 09:45:00'), 'bloomberg', 'Chicago PMI')

我想在 DataFrame 上创建一个多重索引,以便它读取如下内容:

在此输入图像描述

当尝试构造 MultiIndex 时:
MI=pd.MultiIndex(index, (0,0,0))
我遇到以下错误:
TypeError: Index(...) must be called with a collection of some kind, Timestamp('2009-02-27 09:45:00') was passed
这似乎意味着不允许有一个带有 MultiIndex 的 1 行 DataFrame?

我正在迭代 mysql 数据库来检索那些 1 行 DataFrame,然后将它们连接起来。尝试使用keysconcat 命令中的参数会产生另一组问题,因此希望可以使用 MultiIndex 创建此 1 行 DataFrame

下面是重建数据框的数据:
import pandas as pd from pandas import Timestamp dikt={'actual': {0: '34.2'}, 'previous': {0: '33.3'}, 'forecast': {0: '33.0'}, 'importance': {0: 81.300799999999995}} pd.DataFrame(dikt, columns=['actual', 'forecast', 'previous', 'importance'])

python pandas

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