小编Swi*_*ier的帖子

链接Hugo/markdown中的页面

我是HUGO(http://gohugo.io/)静态站点生成器的新手.我正在本地运行Hugo服务器localhost:1313.我试图在两个不同的部分链接页面.我的" feature.md"文件需要链接到" grid_modules.md",反之亦然.以下是hugo生成站点中两个文件的目录结构.

~/mysite/content/about/feature.md

~/mysite/content/modules/grid_modules.md

将两个页面链接在一起的最佳方法是什么?我正在尝试的是以下内容

feature.md:

" [grid_modules] (../modules/grid_modules)"

如果我尝试访问此链接,我会收到错误" localhost:1313/about/modules/grid_modules",我知道这是错误的位置.

我在链接中缺少什么?为什么我没有得到" localhost:1313/modules/grid_modules".

markdown hugo

13
推荐指数
3
解决办法
6710
查看次数

在unicode中将pandas DataFrame写入JSON

我正在尝试将包含unicode的pandas DataFrame写入json,但内置.to_json函数会转义字符.我该如何解决?

例:

import pandas as pd
df = pd.DataFrame([['?', 'a', 1], ['?', 'b', 2]])
df.to_json('df.json')
Run Code Online (Sandbox Code Playgroud)

这给出了:

{"0":{"0":"\u03c4","1":"\u03c0"},"1":{"0":"a","1":"b"},"2":{"0":1,"1":2}}
Run Code Online (Sandbox Code Playgroud)

这与预期结果不同:

{"0":{"0":"?","1":"?"},"1":{"0":"a","1":"b"},"2":{"0":1,"1":2}}
Run Code Online (Sandbox Code Playgroud)


我试过添加force_ascii=False参数:

import pandas as pd
df = pd.DataFrame([['?', 'a', 1], ['?', 'b', 2]])
df.to_json('df.json', force_ascii=False)
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误:

UnicodeEncodeError: 'charmap' codec can't encode character '\u03c4' in position 11: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)


我正在使用WinPython 3.4.4.2 64bit和pandas 0.18.0

python unicode json pandas

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

如何生成嘈杂的模拟时间序列或信号(在Python中)

我常常需要处理一堆嘈杂的,有点相关的时间序列.有时我需要一些模拟数据来测试我的代码,或者为Stack Overflow上的问题提供一些示例数据.我通常最终会从不同的项目中加载一些类似的数据集,或者只是添加一些正弦函数和噪声并花一些时间来调整它.

你的方法是什么?如何使用某些规格生成噪声信号?我是否只是忽略了一些明显明显的标准包装呢?

我通常希望在我的模拟数据中获得的功能:

  • 随着时间的推移噪音水平不同
  • 信号中的一些历史(如随机漫步?)
  • 信号的周期性
  • 能够生成具有相似(但不完全相同)特征的另一个时间序列
  • 也许是一堆奇怪的逢低/峰值/高原
  • 能够重现它(一些种子和一些参数吗?)

我想得到一个类似下面两个[A]的时间序列:

实时系列1 实时系列2

我通常最终创建一个时间序列,其代码如下:

import numpy as np

n = 1000
limit_low = 0
limit_high = 0.48
my_data = np.random.normal(0, 0.5, n) \
          + np.abs(np.random.normal(0, 2, n) \
                   * np.sin(np.linspace(0, 3*np.pi, n)) ) \
          + np.sin(np.linspace(0, 5*np.pi, n))**2 \
          + np.sin(np.linspace(1, 6*np.pi, n))**2

scaling = (limit_high - limit_low) / (max(my_data) - min(my_data))
my_data = my_data * scaling
my_data = my_data + (limit_low - min(my_data))
Run Code Online (Sandbox Code Playgroud)

这会产生如下时间序列:

模拟时间序列

这是我可以使用的东西,但仍然不是我想要的.这里的问题主要是:

  1. 它没有历史/随机游走方面
  2. 它是相当多的代码和调整(如果我想分享一个示例时间序列,这尤其是一个问题)
  3. 我需要重新记录值(正弦等的频率)以产生另一个相似但不完全相同的时间序列.

[A]:对于那些想知道的人来说,前两张图片中描绘的时间序列是每秒车辆在三天(午夜到早上6点被修剪)的两条路上的两个点的交通强度(移动汉宁窗平均超过2分钟) …

python signal-processing time-series

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

VSCode pytest 发现不起作用:conda 错误?

我在使用 VSCode 的 python 测试功能时遇到了一个奇怪的问题。当我尝试发现测试时,出现以下错误:

> conda run -n sandbox --no-capture-output python ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear .
cwd: .
[ERROR 2022-1-3 21:49:47.851]: Error discovering pytest tests:
 [r [Error]: 
EnvironmentLocationNotFound: Not a conda environment: /Users/david.hoffman/miniconda3/envs/sandbox/envs/sandbox
Run Code Online (Sandbox Code Playgroud)

但显然存在重复错误:/Users/david.hoffman/miniconda3/envs/sandbox/envs/sandbox

如果我直接在终端中运行此命令,我会得到预期的输出并且没有错误:

conda run -n sandbox --no-capture-output python ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear
Run Code Online (Sandbox Code Playgroud)

我完全被难住了,因为似乎没有任何设置会影响这一点。

我尝试从头开始重新安装 VSCode(删除所有本地文件后),与 conda 相同。

python conda visual-studio-code

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

将带有 timedeltas 的 Pandas 数据帧写入镶木地板

我似乎无法通过 pyarrow 将包含 timedeltas 的 Pandas 数据帧写入镶木地板文件。

该pyarrow文档指定它可以处理numpy的timedeltas64ms精确度。但是,当我从 numpy 构建数据框时timedelta64[ms],该列的数据类型是timedelta64[ns].

Pyarrow 然后因此引发错误。

这是熊猫或pyarrow中的错误吗?有没有简单的解决方法?

以下代码:

df = pd.DataFrame({
    'timedelta': np.arange(start=0, stop=1000,
        step=10,
         dtype='timedelta64[ms]')
})

print(df.timedelta.dtypes)

df.to_parquet('test.parquet', engine='pyarrow', compression='gzip')
Run Code Online (Sandbox Code Playgroud)

产生以下输出:timedelta64[ns]和错误:

---------------------------------------------------------------------------
ArrowNotImplementedError                  Traceback (most recent call last)
<ipython-input-41-7df28b306c1e> in <module>()
      3                                    step=10,
      4                                    dtype='timedelta64[ms]')
----> 5             }).to_parquet('test.parquet', engine='pyarrow', compression='gzip')

~/miniconda3/envs/myenv/lib/python3.6/site-packages/pandas/core/frame.py in to_parquet(self, fname, engine, compression, **kwargs)
   1940         from pandas.io.parquet import to_parquet
   1941         to_parquet(self, fname, engine,
-> 1942                    compression=compression, **kwargs)
   1943 
   1944     @Substitution(header='Write …
Run Code Online (Sandbox Code Playgroud)

python pandas parquet pyarrow

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

python datetime以毫秒精度浮动

什么是在python中以毫秒精度在float中存储日期和时间信息的优雅方法?编辑:我正在使用python 2.7

我一起攻击了以下内容:

DT = datetime.datetime(2016,01,30,15,16,19,234000) #trailing zeros are required
DN = (DT - datetime.datetime(2000,1,1)).total_seconds()
print repr(DN)
Run Code Online (Sandbox Code Playgroud)

输出:

507482179.234
Run Code Online (Sandbox Code Playgroud)

然后恢复到日期时间:

DT2 = datetime.datetime(2000,1,1) + datetime.timedelta(0, DN)
print DT2
Run Code Online (Sandbox Code Playgroud)

输出:

2016-01-30 15:16:19.234000
Run Code Online (Sandbox Code Playgroud)

但我真的在寻找一些更优雅,更健壮的东西.

在matlab中我会使用datenumdatetime函数:

DN = datenum(datetime(2016,01,30,15,16,19.234))
Run Code Online (Sandbox Code Playgroud)

并回复:

DT = datetime(DN,'ConvertFrom','datenum')
Run Code Online (Sandbox Code Playgroud)

python datetime python-2.7

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

使用.iterrows()以更干净的方式遍历pandas dateframe中的行,并跟踪特定值之间的行

我在python 2.7中有一个pandas日期帧,我想迭代这些行并获得两种类型事件之间的时间以及中间其他类型事件的计数(给定某些条件).

我的数据pandas.DateFrame如下所示:

     Time  Var1  EvntType  Var2
0    15    1     2         17
1    19    1     1         45
2    21    6     2         43
3    23    3     2         65
4    25    0     2         76 #this one should be skipped
5    26    2     2         35
6    28    3     2         25
7    31    5     1         16
8    33    1     2         25
9    36    5     1         36
10   39    1     2         21
Run Code Online (Sandbox Code Playgroud)

我想忽略Var1等于0的行,然后在类型1的事件之间计算类型1的事件和类型2的事件(除了where Var1 == 0)之间的时间.所以在上面的例子中:

Start_time: 19, Time_inbetween: 12, …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 pandas

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