我正在try 合并两个数据帧.On有一个包含事件的日期范围列,另一个包含值的列.我想将这一事件添加到测量值和各自的日期中.


import pandas as pd

df_1 = pd.DataFrame(
    columns=["timestamp", "measured value"],
    data=[
        (pd.to_datetime("2012-07-16 23:23:50"), 2.1),
        (pd.to_datetime("2012-08-16 02:23:50"), 4),
        (pd.to_datetime("2015-07-16 12:23:50"), 2),
        (pd.to_datetime("2018-08-16 20:23:50"), 1.2),
    ],
)
df_2 = pd.DataFrame(
    columns=["start", "end", "event"],
    data=[
        
        (
            pd.to_datetime("2015-06-16 12:23:50"),
            pd.to_datetime("2015-08-16 12:23:50"),
            True,
        ),
       
    ],
)

我try 了以下几种方法:

df_2.index = pd.IntervalIndex.from_arrays(df_2["start"], df_2["end"], closed="both")
df_1.assign(events = df_2['event'])

 timestamp  measured value events
0 2012-07-16 23:23:50    2.1    NaN
1 2012-08-16 02:23:50    4.0    NaN
2 2015-07-16 12:23:50    2.0    NaN
3 2018-08-16 20:23:50    1.2    NaN

所需输出:

 timestamp  measured value event
0 2012-07-16 23:23:50    2.1   NaN
1 2012-08-16 02:23:50    4.0   NaN
2 2015-07-16 12:23:50    2.0  True
3 2018-08-16 20:23:50    1.2   NaN

推荐答案

到目前为止还没有,请使用reindex并转换为NumPy数组:

df_2.index = pd.IntervalIndex.from_arrays(df_2["start"], df_2["end"], closed="both")

df_1['event'] = df_2['event'].reindex(df_1['timestamp']).to_numpy()

输出:

            timestamp  measured value event
0 2012-07-16 23:23:50             2.1   NaN
1 2012-08-16 02:23:50             4.0   NaN
2 2015-07-16 12:23:50             2.0  True
3 2018-08-16 20:23:50             1.2   NaN

或者,将"时间戳"作为df_1的索引:

df_1.set_index('timestamp').assign(event=df_2['event'])

输出:

                     measured value event
timestamp                                
2012-07-16 23:23:50             2.1   NaN
2012-08-16 02:23:50             4.0   NaN
2015-07-16 12:23:50             2.0  True
2018-08-16 20:23:50             1.2   NaN

Python相关问答推荐

在Pandas 日历中插入一行

比较两个二元组列表,NP.isin

将numpy数组存储在原始二进制文件中

点到面的Y距离

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

如果值不存在,列表理解返回列表

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

数据抓取失败:寻求帮助

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

计算天数

Polars asof在下一个可用日期加入

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

python sklearn ValueError:使用序列设置数组元素

Odoo16:模板中使用的docs变量在哪里定义?

如何反转一个框架中列的值?

解决Geopandas和Altair中的正图和投影问题

为什么我的scipy.optimize.minimize(method=";newton-cg";)函数停留在局部最大值上?