如果您有一些对每个观察都是唯一的列(我们称之为“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
需要一个对象列表,并且可以在一次调用中连接任意数量的元素,如果您有多个传感器,这可能会更方便。