如何使用Pandas在Python中将不同的列合并到一个表中

2024-09-30 16:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我收集了一些云的传感器值(csv文件),并注意到了一个问题,我认为我可以通过将不同的列合并到一个表中来解决这个问题。我有下表:

Sensor1x, Sensor1y, Sensor1z, Sensor2x, Sensor2y, Sensor2z

12.1,       0.1,       0.2,        2.2,       3.3,       2.2

NaN,       NaN,        NaN,        NaN,        NaN,      4.5,

etc.

当我尝试从传感器1列中删除NaN值时,由于某种原因,传感器2列中的所有值都设置为0,而所有NaN值都从传感器1列中删除(因此至少NaN部分适用于特定列)。另一件奇怪的事情是,我只选择从一列中删除NaN值(例如Sensor1x),但它们在所有x、y和z列中都被删除

因此,由于这会导致前3列被填充,最后3列为null,我想我可以将删除的Nan列保存在1个变量中,并对我的Sensor2列执行相同的操作,这将给出以下两个变量:

第一个变量:

Sensor1x, Sensor1y, Sensor1z, Sensor2x, Sensor2y, Sensor2z

12.1,       0.1,       0.2,        0,       0,       0,

etc.

第二个变量:

Sensor1x, Sensor1y, Sensor1z, Sensor2x, Sensor2y, Sensor2z

0,          0,         0,          2.2,       3.3,       2.2,

etc.

我如何组合这两个变量以得到完整的表格

我目前在Jupyter笔记本中使用的简单代码:

SDO = pd.read_csv('SensorOutputData202021.csv')
SDO = SDO[SDO['Ax'].notna()]
SDO

我用来打印数据框和删除na值的3行代码。以及出于某种原因使我的三列中其余部分的值为空的代码行

我的当前传感器表的图像:

enter image description here

下面是我在Ax上使用notna函数时发生的情况:

enter image description here


Tags: 文件csv代码etc传感器nanaxsdo
1条回答
网友
1楼 · 发布于 2024-09-30 16:34:24

目前,您正在使用^{}方法,该方法返回列('Ax')的掩码:Trues在value处,false在NaNs处。那么你可以打电话:

SDO = SDO[SDO['Ax'].notna()]

您正在删除Ax is None所在的每一行

您不能从表中“删除”Nones,因为您应该保留其结构

除了notna()之外,我建议您寻找以下方法:

  • ^{}-用另一个值替换目标值
  • ^{}-删除缺少值的行或列
  • ^{}-使用特定逻辑填充缺失值

你也可以阅读pandas documentation的这一部分

因此,根据您将要对数据执行的操作,您应该使用NaN数据完全删除行,或者使用可以在代码中以有意义的方式处理的内容替换这些NaN

相关问题 更多 >