小编Vig*_*oTW的帖子

熊猫情节酒吧订单类别

我有一个带有分类变量的数据集,其中包含三个唯一值,"低","中"和"高":

df.CatVar.value_counts()
Out[93]: 
Medium    35832
Low       25311
High      12527
Name: CatVar, dtype: int64
Run Code Online (Sandbox Code Playgroud)

我试图绘制唯一值的数量作为条形图.但是,以下代码按顺序给出了条形码["中","低","高"]

df.CatVar.value_counts().plot(kind="bar")
Run Code Online (Sandbox Code Playgroud)

如何更改绘图中条形的顺序?

python plot categories pandas

7
推荐指数
1
解决办法
3283
查看次数

使用 ProtoBuf 进行相对导入:使用 ProtoBuf 生成 Python 类会导致 ModuleNotFoundError

protobuf 是否支持 python 的相对导入?

我未能成功创建支持此功能的 protobuf 构建脚本。从我的 .proto 文件生成 python 类时,如果我从与创建生成的 .py 文件的文件夹相同的文件夹中启动 python,我只能导入 python 模块。

我已经构建了以下 MVP。理想情况下,我想要一个结构,其中生成的 python 代码放置在一个单独的文件夹(例如./generated)中,然后我可以移动到其他项目中。我已经发布了我已经开始工作的方法,但我希望更有经验的人能够为我指出更好的解决方案。

基本信息:

  • 蟒蛇 3.6.8
  • protobuf 3.11.3

文件夹结构:

.
|--- schemas
     |---- main_class.proto
     |---- sub
           |----sub_class.proto
|--- generated
Run Code Online (Sandbox Code Playgroud)

尝试 1:相对导入

main_class.proto:

syntax = "proto3";

import public "sub/sub_class.proto";

message MainClass {
    repeated SubClass subclass = 1;
}
Run Code Online (Sandbox Code Playgroud)

sub_class.proto:

syntax = "proto3";

message LogMessage {
    enum Status {
        STATUS_ERROR = 0;
        STATUS_OK = 1;
    }

    Status status = 1;
    string timestamp = …
Run Code Online (Sandbox Code Playgroud)

python protocol-buffers python-3.x protobuf-python

6
推荐指数
1
解决办法
1731
查看次数

在前向填充 (ffill) 值的同时对 Pandas 数据帧进行重新采样

我有一个数据框,其中的片段如下所示

    Time                    Temperature
19  2019-01-01 11:48:51     23.798
20  2019-01-01 11:48:53     23.832
21  2019-01-01 11:48:54     NaN
22  2019-01-01 11:48:55     23.817
23  2019-01-01 11:48:56     NaN
Run Code Online (Sandbox Code Playgroud)

我想将其重新采样为“2S”,同时确保最后的测量值将替换任何 NaN。

df.resample('2S', on='Time').mean().ffill()
Run Code Online (Sandbox Code Playgroud)

结果的片段如下所示

                        Temperature
Time            
2019-01-01 11:48:52     23.832
2019-01-01 11:48:54     23.817
2019-01-01 11:48:56     23.809
Run Code Online (Sandbox Code Playgroud)

请注意时间戳 t=54s 处的值。我想要的是 t=53s 的温度 23.832,因为这是该时间戳的最后记录值。相反,它填充 t=55s 中的值

这就是我想要的输出。我不在乎它是在奇数秒还是偶数秒采样。

                        Temperature
Time            
2019-01-01 11:48:52     23.798
2019-01-01 11:48:54     23.832
2019-01-01 11:48:56     23.817
Run Code Online (Sandbox Code Playgroud)

编辑1: 回复后,我尝试了以下操作:

df.ffill().resample('2S', on='Time').first()
Run Code Online (Sandbox Code Playgroud)

但这给出了以下结果,其中新的 t=52s 等于旧的 t=t=53s,这不是我追求的行为......

                        Temperature
Time            
2019-01-01 11:48:50     23.798
2019-01-01 11:48:52     23.832
2019-01-01 11:48:54     23.832
2019-01-01 11:48:56 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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