我有一个熊猫数据框,所有的值都是字符串。有些是“无”,其余是整数但采用字符串格式,例如“123456”。如何将所有“无”转换为 np.nan,将其他转换为整数,例如 123456。
df = {'col1': ['1', 'None'], 'col2': ['None', '123']}
Run Code Online (Sandbox Code Playgroud)
将 df 转换为:
df = {'col1': [1, NaN], 'col2': [NaN, 123]}
Run Code Online (Sandbox Code Playgroud) 我需要在树莓派上使用c/c++和I2C从MAX30100芯片读取4字节数据。我尝试用 python 来做。它奏效了。但问题是数据速率太慢,我需要至少250次/秒更新数据,这意味着读取频率>=250Hz。所以,我把阅读从python转向了c/c++。
用wiringPi只读写一个字节是没有问题的。但是,我需要从fifo中读取4个字节(fifo的地址是0x04),wiringPi没有提供读取块数据的功能。仅具有读取字节/字功能。
然后,我尝试使用 SMBus 进行块读取,可以在这里找到: https: //github.com/leon-anavi/rpi-examples/blob/master/BMP180/c/smbus.c
但是,一旦我调用 i2c_smbus_read_block_data(),我的树莓派就完全冻结了。
这是我添加到 WiringPiI2C.c 中的读取块数据:
void i2c_smbus_read_block_data(int fd, int command, uint8_t *values, int length)
{
union i2c_smbus_data data;
int i, err;
err = i2c_smbus_access(fd, I2C_SMBUS_READ, command,
I2C_SMBUS_BLOCK_DATA, &data);
if (err < 0)
return;
printf("test1");
for (i = 1; i <= length; i++)
values[i-1] = data.block[i];
}
Run Code Online (Sandbox Code Playgroud)
WiringPiI2C.c可以在这里找到:https: //github.com/WiringPi/WiringPi/blob/master/wiringPi/wiringPiI2C.c
有人知道那里发生了什么事吗?或者有更好的解决方案?