考虑以下 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 及其更改?
我有以下数据框:
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) 我想在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 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)
这些文件的内容相当晦涩,对于理解它的工作原理确实没有帮助。所有见解均受到赞赏。谢谢
参考指南中提供的工具提示示例显示了以下格式示例:
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")以人类可读的格式显示日期时间?
但我想更清楚地了解散景的这方面的可能性/如何工作
让我们考虑文档中的以下示例:
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 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')
知道发生了什么事吗?
我有一个格式为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的参数.
我有一个小数据框,如下所示:
和一个元组,例如:(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 ×8
pandas ×4
bokeh ×2
decimal ×1
nlp ×1
nltk ×1
numpy ×1
pretty-print ×1
python-2.7 ×1
python-2.x ×1
python-3.x ×1