0

我不知道如何将数据添加到熊猫数据框中的列。

我有四个传感器在四个线程中采样。我希望每个传感器都将当前值附加到熊猫数据框中的特定列。

例如:

我有一个只有标题的 .csv 文件:

p1,p2,p3,c

我希望线程为列添加一个值。因此,在第一个传感器上的第一个样本之后,数据帧将具有。

p1 p2  p3  c
3  NaN NaN NaN

然后下一个传感器应该添加一个像这样的值

p1 p2  p3  c
3  5   NaN NaN

我已经搜索附加,但我无法弄清楚代码应该如何。

4

1 回答 1

1

如果您有一些对每个观察都是唯一的列(我们称之为“ObservationID”),那么执行此操作非常简单。您可以使用pandas.concatpandas.merge。我会去,concat因为我发现它稍微简单一些。

import pandas as pd

sensor1 = pd.DataFrame({"p1":[5,2,3], "ObservationID":[22, 31, 14]})
sensor2 = pd.DataFrame({"p2":[1,1,0], "ObservationID":[22, 31, 14]})

# first, set index column to be unique
sensor1_indexed = sensor1.set_index(["ObservationID"])
sensor2_indexed = sensor2.set_index(["ObservationID"])

sensors = pd.concat([sensor1_indexed, sensor2_indexed], axis=1)

如果您可以以相同的方式订购它们,则可以添加ignore_index=True以进行连接:

sensors = pd.concat([sensor1, sensor2], axis=1, ignore_index=True)

最后,您也可以使用 来执行此操作pd.merge,但我真的不明白为什么需要这样做(除非您在两个部分上都有同名的列,否则您需要使用合并或选择其中一个传感器来获胜) . 为此,您需要一个连接条件(这就是我们为此使用未索引传感器的原因):

sensors = pd.merge(sensor1, sensor2, how="inner", on=["ObservationID"]) 

请注意,它pd.concat需要一个对象列表,并且可以在一次调用中连接任意数量的元素,如果您有多个传感器,这可能会更方便。

于 2013-05-24T19:06:44.267 回答