这快把我逼疯了.我在用

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相关问答推荐

Pandas 中每行的最大值范围

DuckDB:带有嵌套对象的星形表达式

如何在选中项目时设置QTreeView中整行的 colored颜色 ?

如何在输入正确的用户名和密码时添加按钮?

如何绘制交叉验证的AUROC并找到最佳阈值?

我不能使用拆分来分隔数据

Select 作为 MultiIndex 一部分的两个 DatetimeIndex 之间的行

如何使用正则表达式通过反向搜索从链接中获取特定文本

Python 舍入数字不准确

找到在指定列的另一个分组中存在重复的行.

在一行中读写一个csv文件

try 使用 GEKKO 求解非线性方程组.系统有多种解决方案,但 GEKKO 给出了错误的解决方案.我该如何解决?

Python pandas将单元格值移动到同一行中的另一个单元格

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

Python - 使用 OpenCV 将字节图像转换为 NumPy 数组

如何从左到右解包元组?

如何找出从哪个模块导入名称?

根据条件过滤元组列表

类方法和实例方法同名

为 Python 3 和 PyQt 构建可执行文件