小编may*_*ull的帖子

如何在将字典转换为数据帧时设置索引?

我有一个类似下面的字典

defaultdict(list,
        {'Open': ['47.47', '47.46', '47.38', ...],
         'Close': ['47.48', '47.45', '47.40', ...],
         'Date': ['2016/11/22 07:00:00', '2016/11/22 06:59:00','2016/11/22 06:58:00', ...]})
Run Code Online (Sandbox Code Playgroud)

我的目的是将此字典转换为数据帧,并将"日期"键值设置为数据帧的索引.

我可以通过以下命令完成这项工作

df = pd.DataFrame(dictionary, columns=['Date', 'Open', 'Close'])

     0  Date                  Open    Close
     1  2016/11/22 07:00:00   47.47   47.48
     2  2016/11/22 06:59:00   47.46   47.45
     3  2016/11/22 06:58:00   47.38   47.38

df.index = df.Date

     Date                  Date                  Open    Close
     2016/11/22 07:00:00   2016/11/22 07:00:00   47.47   47.48
     2016/11/22 06:59:00   2016/11/22 06:59:00   47.46   47.45
     2016/11/22 06:58:00   2016/11/22 06:58:00   47.38   47.38
Run Code Online (Sandbox Code Playgroud)

但是,我有两个'Date'列,其中一列是索引,另一列是原始列.

有没有办法将字典转换为数据帧时设置索引,而不像下面那样重叠列?

     Date                  Close       Open
     2016/11/22 07:00:00 …
Run Code Online (Sandbox Code Playgroud)

python dictionary pandas

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

如何使用 PyQtGraph 的 DateAxisItem?

我在 Python 3.6.2(32bit) 和 Windows 10 上使用 PyQtGraph '0.9.8+gd627e39'。

我的目标是使用显示日期时间的 X 轴绘制实时数据。

Time                                                Value
datetime.datetime(2018, 3, 1, 9, 36, 50, 136415)    10
datetime.datetime(2018, 3, 1, 9, 36, 51, 330912)    9
datetime.datetime(2018, 3, 1, 9, 36, 51, 382815)    12
datetime.datetime(2018, 3, 1, 9, 36, 52, 928818)    11
...
Run Code Online (Sandbox Code Playgroud)

查了https://gist.github.com/friendzis/4e98ebe2cf29c0c2c232 , pyqtgraph , plotting time series等相关问题 ,但还是很难掌握怎么用DateAxisItem

我尝试使用该模块制作一个简单的代码,

import numpy as np
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
from datetime import datetime
from time import time …
Run Code Online (Sandbox Code Playgroud)

python pyqtgraph

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

如何使用 pytables 或 h5py 将数据集对象复制到不同的 hdf5 文件?

我选择了特定的 hdf5 数据集,并希望将它们复制到新的 hdf5 文件中。我可以找到一些有关在两个文件之间复制的教程,但是如果您刚刚创建了一个新文件并且想要将数据集复制到该文件怎么办?我以为下面的方法可行,但事实并非如此。有什么简单的方法可以做到这一点吗?

>>> dic_oldDataset['old_dataset']
<HDF5 dataset "old_dataset": shape (333217,), type "|V14">

>>> new_file = h5py.File('new_file.h5', 'a')
>>> new_file.create_group('new_group')

>>> new_file['new_group']['new_dataset'] = dic_oldDataset['old_dataset']


RuntimeError: Unable to create link (interfile hard links are not allowed)
Run Code Online (Sandbox Code Playgroud)

python hdf5 pytables h5py

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

如何制作一个显示不同类型值比率的数据框?

我有一个看起来像这样的数据框:

>>> df
                        value
time
2020-01-31 07:59:43.232    -6
2020-01-31 07:59:43.232    -2
2020-01-31 07:59:43.232    -1
2020-01-31 07:59:43.264     1
2020-01-31 07:59:43.389     0
2020-01-31 07:59:43.466     1
2020-01-31 07:59:43.466     5
2020-01-31 07:59:43.466    -1
2020-01-31 07:59:43.467    -1
2020-01-31 07:59:43.467    -1
2020-01-31 07:59:43.467     5
2020-01-31 07:59:43.467     1
Run Code Online (Sandbox Code Playgroud)

我想再添加 3 列,以某个数字显示正负值的比率。例如,如果数字是 8

                        value    neg     pos    total
time
2020-01-31 07:59:43.232    -6
2020-01-31 07:59:43.232    -2      8       0        8
2020-01-31 07:59:43.232    -1
2020-01-31 07:59:43.264     1
2020-01-31 07:59:43.389     0
2020-01-31 07:59:43.466     1
2020-01-31 07:59:43.466     5      1       7        8
2020-01-31 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

pandas 数据框 - 如何找到满足某些条件的连续行?

我正在尝试制作一个程序来查找满足某些条件的连续行。例如,如果有一个如下所示的数据框:

df = pd.DataFrame([1,1,2,-13,-4,-5,6,17,8,9,-10,-11,-12,-13,14,15], 
            index=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], 
            columns=['value'])

>>> df
    value
0       1
1       1
2       2
3     -13
4      -4
5      -5
6       6
7      17
8       8
9       9
10    -10
11    -11
12    -12
13    -13
14    -14
15     15
Run Code Online (Sandbox Code Playgroud)

我希望它返回一个数据框,显示满足以下条件的行:

1) 顺序必须是(positive rows)and (negative rows),而不是相反。

2) 每组正或负的行必须至少有 3 行

3)正负组必须彼此相邻

          posIdx,   negIdx,  posLength,  negLength
0              2          3           3          3    # (1,1,2) (-13,-4,-5)
1              9         10           4          5    # (6,17,8,9) (-10,-11,-12,-13,-14)
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法可以使用 python 或 pandas 命令来做到这一点吗?

python pandas

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

如何在不删除deque的情况下获取deque的第一个值?

我使用Python 3.6.1并且由于其方便性,我经常使用集合中的deque().这一次,我需要得到一个双端队列的第一个值,并想知道它是否可能.

问题是我可以使用.popleft(),但它最终会同时删除该值.我想到了list(deque01)[0],但是当deque01很大或者获得第一个值的过程重复多次时,我担心它是否会耗费大量资源.是否有任何方法或技巧可以有效地做到这一点?

python deque

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

如何将嵌套的defaultdict()默认为指定长度的列表?

我想知道如何将嵌套的defaultdict默认为列表[0,0,0].例如,我想制作这种分层默认用法.

dic01 = {'year2017': {'jul_to_sep_temperature':[25, 20, 17], 
                      'oct_to_dec_temperature':[10,  8,  7]},
         'year2018': {'jan_to_mar_temperature':[ 8,  9, 10].
                      'apr_to_jun_temperature':[ 0,  0,  0]}
        }
Run Code Online (Sandbox Code Playgroud)

为了做这个嵌套的dictioanry,我做了dic01 = defaultdict(dict)并添加了一个字典作为dic01['year2018']['jan_temperature'] = [8, 9, 10].我的问题是,是否可以在不事先绑定[0,0,0]的情况下更新列表的每个元素.在其他工作中,如果我将defaultdict作为defaultdict(dict),我必须在使用之前绑定列表[0,0,0],并且我想跳过这个绑定过程.

# The way I do this
dic01['year2018']['jul_to_sep_temperature'] = [0,0,0]    # -> how to omit this procedure?
dic01['year2018']['jul_to_sep_temperature'][0] = 25

# The way I want to do this
dic01['year2018']['jul_to_sep_temperature'][0] = 25      # by the end of July
Run Code Online (Sandbox Code Playgroud)

python dictionary defaultdict

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

如何在 C# 中保存并附加到序列化的 MessagePack 二进制文件?

我试图用来MessagePack保存多个结构列表,因为我读到它的性能比BinaryFormatter序列化更好。

我想要做的是接收实时时间序列数据并定期将其保存(附加)到磁盘上,例如,如果列表的元素数为 100。我的问题是:

1)在这种情况下,序列化结构列表并将其异步保存到磁盘是否更好?

2) 如何使用 MessagePack 简单地将其保存到磁盘?

public struct struct_realTime
{
    public int indexNum { get; set; }
    public string currentTime { get; set; }
    public string currentType { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        List<struct_realTime> list_temp = new List<struct_realTime>(100000);

        for (int num=0; num < 100000; num++)
        {
            list_temp.Add(new struct_realTime
            {
                indexNum = 1,
                currentTime = "time",
                currentType = "type",
            });
        }

        string filename = "file.bin";

        using (var fileStream …
Run Code Online (Sandbox Code Playgroud)

c# serialization msgpack

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

列表的大小是否越大,向其中添加新值所需的时间就越长?

我正在制作一个程序,可以实时从互联网连续接收数据(字符串类型)。为了更好的性能,它将新数据存储在列表(内存)中,并且每天只将其写入文件一次。

我想知道列表的大小是否越大,向其添加新值所需的时间就越长。例如,在性能方面,向大小为 10 的列表添加新数据与向大于 3000000 的列表执行相同操作之间有什么区别吗?我想知道如果我从一开始就设置列表的默认大小,例如new List<string>(3000000).

如果我能得到一些关于更好地完成这项工作的建议,我将不胜感激。

c# list

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

如何通过多种条件选择某些列?

我已经用字典制作了一个数据框来对其进行操作。

dic_people = defaultdict(dict)

dic_people['A']['language']    = 'English'
dic_people['A']['nationality'] = 'Russia'
dic_people['A']['joined']      = 201010

dic_people['B']['language']    = 'French'
dic_people['B']['nationality'] = 'Canada'
dic_people['B']['joined']      = 201009

dic_people['C']['language']    = 'English'
dic_people['C']['nationality'] = 'Canada'
dic_people['C']['joined']      = 201008

dic_people['D']['language']    = 'French'
dic_people['D']['nationality'] = 'France'
dic_people['D']['joined']      = 201007

dic_people['E']['language']    = 'English'
dic_people['E']['nationality'] = 'Ireland'
dic_people['E']['joined']      = 201011

df = pd.DataFrame.from_dict(dic_people)

>>> df
                A       B        C       D        E
joined        201010  201009   201008  201007   201011
language     English  French  English  French  English
nationality   Russia  Canada   Canada  France  Ireland
Run Code Online (Sandbox Code Playgroud)

我想选择2个人,他们1)最早加入,2)说英语。因此,结果将是

                A       C …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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