小编Ann*_*teC的帖子

将具有混合数据和类别的pandas DataFrame存储到hdf5中

我想将具有不同列的dataFrame存储到hdf5文件中(查找下面带有数据类型的摘录).

In  [1]: mydf
Out [1]:
endTime             uint32
distance           float16
signature         category
anchorName        category
stationList         object
Run Code Online (Sandbox Code Playgroud)

在转换一些列(我上面的摘录中的signature和anchorName)之前,我使用了类似下面的代码来存储它(它工作得非常好):

path = 'tmp4.hdf5'
key = 'journeys'
mydf.to_hdf(path, key, mode='w', complevel=9, complib='bzip2')
Run Code Online (Sandbox Code Playgroud)

但它不适用于类别,然后我尝试了以下:

path = 'tmp4.hdf5'
key = 'journeys'
mydf.to_hdf(path, key, mode='w', format='t', complevel=9, complib='bzip2')
Run Code Online (Sandbox Code Playgroud)

它工作正常,如果我删除列stationList,其中每个条目是一个字符串列表.但是在本专栏中,我得到以下异常:

Cannot serialize the column [stationList] because
its data contents are [mixed] object dtype
Run Code Online (Sandbox Code Playgroud)

如何改进我的代码以存储数据框?

pandas版本:0.17.1
python版本:2.7.6(由于兼容性原因无法更改)


edit1(一些示例代码):

import pandas as pd

mydf = pd.DataFrame({'endTime' : pd.Series([1443525810,1443540836,1443609470]),
                    'distance' : pd.Series([454.75,477.25,242.12]),
                    'signature' : pd.Series(['ab','cd','ab']),
                    'anchorName' : pd.Series(['tec','ing','pol']),
                    'stationList' : pd.Series([['t1','t2','t3'],['4','t2','t3'],['t3','t2','t4']]) …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

gitlab runners 工件:zip 中没有父文件夹的子文件夹和文件

我有一个名为“public”的文件夹,其中包含子文件夹(带有子文件夹和文件等)和文件,例如:

\n
\xe2\x94\x94 public\n  \xe2\x94\x94 folder1\n     \xe2\x94\x94 file1.txt\n  \xe2\x94\x94 folder2\n   p_file1.txt\n   p_file2.txt\n
Run Code Online (Sandbox Code Playgroud)\n

这些文件夹和文件应作为 gitlab 运行程序运行的工件返回。只要这有效,文件夹“public”就会将 zip 文件的一部分作为其他文件夹的父文件夹。我只想将子文件夹和文件放入 zip 文件中,而不需要其父文件夹“public”(在上面的示例中替换“public”,但将“artifact.zip”替换为预期结构)。

\n

到目前为止我尝试过:

\n
- "public"\n- "public/*"\n- "public/**"\n- "public/**/*"\n
Run Code Online (Sandbox Code Playgroud)\n

编辑(我可能不太清楚):\n我想在 gitlab-ci.yml 中指定它:

\n
  artifacts:\n    name: app\n    paths:\n      - ???\n
Run Code Online (Sandbox Code Playgroud)\n

gitlab-ci-runner

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

Python plt:关闭或清晰的数字不起作用

我用我不显示但存储到硬盘驱动器的脚本生成了大量图形。过了一会儿,我收到了消息

/usr/lib/pymodules/python2.7/matplotlib/pyplot.py:412: RuntimeWarning: 打开了20多个图。通过 pyplot 接口 ( matplotlib.pyplot.figure)创建的图会保留直到明确关闭,并且可能会消耗太多内存。(要控制此警告,请参阅 rcParam figure.max_num_figures)。max_open_warning、运行时警告)

因此,我尝试在存储后关闭或清除数字。到目前为止,我尝试了以下所有方法,但没有一个有效。我仍然收到来自上面的消息。

plt.figure().clf()
plt.figure().clear()
plt.clf()
plt.close()
plt.close('all')
plt.close(plt.figure())
Run Code Online (Sandbox Code Playgroud)

此外,我试图通过以下方式限制开放数字的数量

plt.rcParams.update({'figure.max_num_figures':1})
Run Code Online (Sandbox Code Playgroud)

下面是一段与上述行为类似的示例代码。我在我尝试过的地方添加了我尝试过的不同选项作为评论。

from pandas import DataFrame
from numpy import random
df = DataFrame(random.randint(0,10,40))

import matplotlib.pyplot as plt
plt.ioff()
#plt.rcParams.update({'figure.max_num_figures':1})
for i in range(0,30):
    fig, ax = plt.subplots()
    ax.hist([df])
    plt.savefig("/home/userXYZ/Development/pic_test.png")
    #plt.figure().clf()
    #plt.figure().clear()
    #plt.clf()
    #plt.close() # results in an error
    #plt.close('all') # also error
    #plt.close(plt.figure()) # also error
Run Code Online (Sandbox Code Playgroud)

完整地说,这是我在使用时遇到的错误plt.close

无法调用“event”命令:在执行从“ttk::ThemeChanged”中调用的“event generate $w <>”(过程“ttk::ThemeChanged”第6行)时,应用程序已被破坏

python matplotlib python-2.7

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