我有一个Pandas DataFrame,其中有几行具有相同的ID。我想通过ID对它们进行分组,并检查哪一行包含的NaN值(或零)值最少,其余的丢弃。
我希望我的最终DataFrame每个ID仅包含一行,并且信息的最大数量为每行没有迭代行。
如果两行或更多行包含的NaN数量最少(或为零),我将应用第二个尚未定义的布尔过滤器。就像这样:
初始表:
ID A B C D E
1 4 56 NaN 890 aaa 907
2 4 NaN NaN 890 aaa 907
3 7 89 78 754 bbb 1
4 7 89 NaN 754 bbb 1
5 7 89 78 754 bbb NaN
Run Code Online (Sandbox Code Playgroud)
决赛桌:
ID A B C D E
1 4 56 NaN 890 aaa 907
3 7 89 78 754 bbb 1
Run Code Online (Sandbox Code Playgroud) 我有一种从文件中读取布尔向量的方法:
std::vector<bool> OPCConnector::getAlarmVector() {
std::vector<bool> data;
std::ifstream DataFile(filepath);
if (DataFile) {
bool value;
while (DataFile >> value) {
data.push_back(value);
std::cout << value;
}
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
的filepath变量是通过构造分配一个对象属性:
OPCConnector::OPCConnector(std::string fpth) {
filepath = fpth;
}
Run Code Online (Sandbox Code Playgroud)
在main()函数中,构造函数被调用:
OPCConnector::OPCConnector(std::string fpth) {
filepath = fpth;
}
Run Code Online (Sandbox Code Playgroud)
现在,我已经检查了可执行文件的文件夹是通过GetModuleFileNameA(),并确保该文件位于同一目录中并具有相同的名称(此外,我确保扩展名不是文件名的一部分,喜欢"alarmes.txt.txt")。
我调试了第一种方法getAlarmVector(),它永远不会超过if (DataFile)条件,就好像它找不到文件一样。
我使用 Visual Studio 2019 运行代码,但没有任何反应。向量保持为空。错误是没有这样的文件或目录。
默认工作目录是$(ProjectDir),它正是我的文件所在的位置。
编辑:我也尝试过使用相对路径和绝对路径,但都不起作用。
编辑 2:我还使用检查了目录GetCurrentDirectory()并将.txt文件复制到那里,但它不起作用。
解决方案:奇怪的是,我删除了该文件并使用相同的名称再次创建它,并且它起作用了。感谢您的回答。