我无法弄清楚如何将数据添加到熊猫数据框中的列中。
我有四个传感器,它们采用四个线程进行采样。我希望每个传感器将当前值附加到熊猫数据框中的特定列。
例如:
我有一个仅包含标题的.csv文件:
p1,p2,p3,c
我希望线程为列添加值。因此,在第一个传感器上的第一个样本之后,数据帧将具有。
p1 p2 p3 c
3 NaN NaN NaN
然后下一个传感器应该添加一个像这样的值
p1 p2 p3 c
3 5 NaN NaN
我已经搜索了追加,但我无法弄清楚代码应该如何。
答案 0 :(得分:1)
如果你有一些每个观察所独有的列(我们称之为“ObservationID”),那么这样做非常简单。您可以使用pandas.concat
或pandas.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
会获取一个对象列表,并且可以在一次调用中连接任意数量的元素,如果您有多个传感器,这可能会更方便。