小编lon*_*tud的帖子

如何基于多个条件填充基于前一行的熊猫数据框列的行?

免责声明:这可能是重复的,但我找不到确切的解决方案。请随时将此问题标记为重复,并在评论中提供指向重复问题的链接。

我仍在学习 python 数据帧操作,这可能有一个我无法弄清楚的非常简单的解决方案。

我有一个带有单列的 python 数据框。现在,如果满足某些条件,我想将每一行的值更改为前一行的值。我已经创建了一个循环解决方案来实现这一点,但我希望有一个更有效的解决方案。

创建初始数据:

import numpy as np
import pandas as pd

data = np.random.randint(5,30,size=20)
df = pd.DataFrame(data, columns=['random_numbers'])

print(df)

    random_numbers
0                6
1               24
2               29
3               18
4               22
5               17
6               12
7                7
8                6
9               27
10              29
11              13
12              23
13               6
14              25
15              24
16              16
17              15
18              25
19              19
Run Code Online (Sandbox Code Playgroud)

现在让我们假设两个条件是 1) 值小于 10 和 2) 值大于 20。在任何这些情况下,将行值设置为前一行值。这已以循环格式实现,如下所示:

for index,row in df.iterrows():
    if index == …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

在c ++中初始化std :: ofstream的向量

如何初始化std :: ofstream的向量?我正在进行套接字编程,我接收不同符号的数据.对于每个符号,我需要分配一个单独的文件句柄来向其写入数据.所以,我需要一个std :: ofstream数组.现在我想初始化其中的100个std :: ofstream.但它对我不起作用.请查看以下代码并提出替代方案.

int main(){
std::vector <std::ofstream > myFilePointerMap;
std::ofstream  ofs;
    ofs.open("E:\\data\\test.txt", std::ios::app);
    for(int i=0;i<100;i++){
        myFilePointerMap.push_back( ofs);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows eclipse中的cygwin gcc进行编译.

编译时出现以下错误:

'std :: ios_base&std :: ios_base :: operator =(const std :: ios_base&)'是专线789,外部位置:D:\ cygwin64\lib\gcc\x86_64-pc-cygwin\4.8.3\include\c ++\bits\ios_base.h C/C++问题

请帮我解决一下这个.

编辑: 让我解释一下我需要做什么,以便也可以支持替代解决方案.我需要创建一个侦听套接字的对象.现在,此套接字接收最多100条不同的消息,这些消息需要写入单独的文件,具体取决于各个消息中收到的id(1-100).

目前,我已经创建了一个包含文件路径的字符串向量.标题中的声明如下:

std::vector <std::string> filePathMap;
Run Code Online (Sandbox Code Playgroud)

然后我在构造函数中初始化这些文件路径,如下所示:

for(int i=0;i<100;i++){
    filePathMap.push_back(" ");
}
Run Code Online (Sandbox Code Playgroud)

然后对于1到100之间的随机索引,当我订阅消息时,我将relavant文件路径设置为

filePathMap[j]=filePath;
Run Code Online (Sandbox Code Playgroud)

在收到消息后,我打开与filePathMap和index对应的文件,写入并关闭它.

最初,我想创建一个对应于这些不同符号的文件指针向量,这样当我收到一条消息时,我可以简单地写入文件指针,而不会每次都打开和关闭.因此,我在我的头文件中定义了ofstreams的向量,如下所示:

    std::vector <std::ofstream > myFilePointerMap;
Run Code Online (Sandbox Code Playgroud)

但是在构造函数中,当我输入以下代码时,我得到错误:

std::ofstream  ofs;
ofs.open("E:\\data\\test.txt", std::ios::app);
for(int i=0;i<100;i++){
    myFilePointerMap.push_back( ofs); //THIS DOES NOT COMPILE
}    
Run Code Online (Sandbox Code Playgroud)

请注意,我只是尝试将myFilePointerMap的vector初始化为100,这样当我稍后在代码中分配myFilePointerMap时,它应该可以正常工作.

 myFilePointerMap[j].open(filePath.c_str(),std::ios::app);
Run Code Online (Sandbox Code Playgroud)

这里,j可以是0-99之间的任何值.

c++ cygwin vector ofstream

0
推荐指数
1
解决办法
630
查看次数

标签 统计

c++ ×1

cygwin ×1

dataframe ×1

ofstream ×1

pandas ×1

python ×1

vector ×1