这快把我逼疯了.我在用

3.10.13 (main, Aug 25 2023, 13:20:03) [GCC 9.4.0]
pandas version 2.1.1
numpy version 1.26.2
pyarrow version 14.0.1

我想判断df_entry_log['AM_PM'],并根据测试填充一列.

创建一列df_entry_log['bag_weight']

如果为df_entry_log['AM_PM'] = "AM",则使用df_entry_log['prev_wrk_day']查找Df_详细信息['bag_weight'],并将值放入df_entry_log['bag_weight'] ie 97.10

否则df_entry_log['AM_PM'] == "PM'放入Df_详细信息['bag_weight']的值,查找df_entry_log['entry_date']

我想使用一个矢量,但我的大脑已经崩溃了.

Df_entry_log:

      guest     entry_date     AM_PM  prev_wrk_day   next_wrk_day
1     janet     2007-01-17     PM     2007-01-16     2007-01-18
2     janet     2007-04-25     AM     2007-04-24     2007-04-26
3     janet     2007-07-25     AM     2007-07-24     2007-07-26

Df_详细信息

      guest    gate_date  bag_weight
8     janet     2007-01-16     97.10    
9     janet     2007-01-17     94.95   
10    janet     2007-01-18     89.07  

推荐答案

您可以try :

def get_weight(row):
    try:
        if row["AM_PM"] == "AM":
            return df_details.loc[(row["guest"], row["prev_wrk_day"]), "bag_weight"]
        else:
            return df_details.loc[(row["guest"], row["entry_date"]), "bag_weight"]
    except KeyError:
        return np.nan

# set index to guest/gate_date for easy searching:
df_details = df_details.set_index(["guest", "gate_date"])
df_entry_log["bag_weight"] = df_entry_log.apply(get_weight, axis=1)

print(df_entry_log)

打印:

   guest  entry_date AM_PM prev_wrk_day next_wrk_day  bag_weight
1  janet  2007-01-17    PM   2007-01-16   2007-01-18       94.95
2  janet  2007-04-25    AM   2007-04-24   2007-04-26         NaN
3  janet  2007-07-25    AM   2007-07-24   2007-07-26         NaN

Python-3.x相关问答推荐

如果行在所有上级索引中都为0,如何删除下级索引行?

pandas查找另一列中是否存在ID

泛型类型的参数的静态类型

从Metacritic上通过网络擦除游戏数据的问题

如何在当前测试中使用fixture 转换后的数据进行参数化?

继承自 Counter 与 dict 的类实例的 Deepcopy

如何立即从asyncio.Task获取异常?

切片的Python复杂性与元组的星号相结合

在 python f-string 中使用 \u

将 pandas Timestamp() 转换为 datetime.datetime() 以支持 peewee DateTimeField()

Python 3 `str.__getitem__` 的计算复杂度是多少?

如何将虚拟变量列转换为多列?

ImportError:没有名为资源的模块

如何在 Python 中计算 cohen 的 d?

为什么在 Python 中不推荐使用 MutableString?

根据条件过滤元组列表

同步调用协程

为什么 Python 生成器中的异常没有被捕获?

python 3中最快的标准输入/输出IO?

如何在不更改任何默认值的情况下在 Ubuntu 上为 python 3.8 安装 pip?