gpt4 book ai didi

python - Pandas - 将 df.apply() 的结果存储为仅选择行

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:37 25 4
gpt4 key购买 nike

我有一个相当复杂的 df.apply() 来计算两个日期之间的营业时间。

我让它在单行/示例中没有问题,但是我现在正尝试将它应用于整个 df。

示例代码:df.apply(lambda row: calc_bus_hrs(row['Created Date'], row['T1 - Date']) if not (pd.isnull(row['T1 - Date'])) else np.nan , 轴=1)

df.apply 与每一行都不相关,并返回一些 nan 输出这很好

输出:

40171 南
40172 南
40173 0.399722
40174 南
40175 南
40176 南
40177 南
40178 南
40179 0.017222
40180 南

现在我想像这样使用另一个列值保存到我的 df 中:

df[df['T1 - From'].values[0] + " Time"]

现在的问题是当 df[df['T1 - From'].values[0] 包含一个 nan 时上面的代码失败。

  • 如何将输出仅保存到不是 nan 的行?

完整代码:

df[df['T1 - From'].values[0] + " Time"] = df.apply(lambda row: calc_bus_hrs(row['Created Date'], row['T1 - Date']) if not (pd.isnull(row['T1 - Date'])) else np.nan, axis=1)

错误:

TypeError: unsupported operand type(s) for +: 'float' and 'str'

最佳答案

您可以通过定义一个单独的 lambda 函数来实现它,该函数可以处理行逻辑:

def lambda_func(row):
if df['T1 - Date'] is not None:
return calc_bus_hrs(row['Created Date'], row['T1 - Date'])
else:
return nan

df[df['T1 - From'].values[0] + " Time"] = df.apply(lambda_func(x))

关于python - Pandas - 将 df.apply() 的结果存储为仅选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51130264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com