小编Sed*_*ter的帖子

Pandas:通过行索引和列名称获取单元格值

假设我们有一个 pandas 数据框:

   name  age  sal
0  Alex   20  100
1  Jane   15  200
2  John   25  300
3   Lsd   23  392
4   Mari  21  380
Run Code Online (Sandbox Code Playgroud)

假设现在删除了几行,但我们不知道已删除的索引。例如,我们使用 删除行索引 1 df.drop([1])。现在数据框可以归结为:

  fname  age  sal
0  Alex   20  100
2  John   25  300
3   Lsd   23  392
4   Mari  21  380
Run Code Online (Sandbox Code Playgroud)

我想从行索引 3 和列“年龄”获取值。它应该返回 23。我该怎么做?

df.iloc[3, df.columns.get_loc('age')]不起作用,因为它将返回 21。我猜 iloc 采用连续行索引?

python pandas

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

在C中重复使用struct是一个好习惯吗?

假设我有两个结构来自不同的头文件:

header_1.h

struct main_node {
    struct *sec_node
}
Run Code Online (Sandbox Code Playgroud)

header_2.h

struct sec_node {
    int var;
}
Run Code Online (Sandbox Code Playgroud)

现在我使用这两个头文件,main.c代码看起来像这样:

#include <stdio.h>
#include "header_1.h"
#include "header_2.h"

struct main_node *node;

void main()
{
  for (int i = 0; i < 1000; i++)
      printf( "%d\n", node->sec_node->var) ;
}
Run Code Online (Sandbox Code Playgroud)

我们假设,我没有使用现代优化编译器.我循环了struct很多次,在这里使用临时变量会更快/更好吗?

在C中,性能方面有什么不同吗?

void main()
{
   int temp = node->sec_node->var;
   for (int i = 0; i < 1000; i++)
      printf( "%d\n", temp);
}
Run Code Online (Sandbox Code Playgroud)

c performance struct

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

#符号在C中的含义是什么?

我遇到过这段代码,我不知道该怎么#reg做:

#define FPGA_WRITE(reg,val) do { printf("%-20s %08X <<- %08lX\n", #reg, (reg), (unsigned long)(val));} while (0)

int main()
{
   FPGA_WRITE(10,15);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这打印出以下内容:

10                   0000000A <<- 0000000F
Run Code Online (Sandbox Code Playgroud)

如果我取出#,我在执行代码时会遇到段错误.奇怪.有什么用#

c

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

如何避免使用C中非空终止的缓冲区调用fopen()?

我们来看看这个例子:

static FILE *open_file(const char *file_path)
{
    char buf[80];
    size_t n = snprintf(buf, sizeof (buf), "%s", file_path);
    assert(n < sizeof (buf));
    return fopen(buf, "r");
}
Run Code Online (Sandbox Code Playgroud)

在这里,它assert()是一个接一个.从联机帮助页snprintf:

"成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)."

因此,如果它返回80,则字符串将填充缓冲区,并且不会被\ 0终止.这将导致问题,因为fopen()假设它是空终止.

防止这种情况的最佳方法是什么?

c string null fopen stdio

3
推荐指数
2
解决办法
156
查看次数

标签 统计

c ×3

fopen ×1

null ×1

pandas ×1

performance ×1

python ×1

stdio ×1

string ×1

struct ×1