gpt4 book ai didi

python - 根据其他行和列的多个条件在数据框中创建新列?包括空行? - python / Pandas

转载 作者:行者123 更新时间:2023-12-01 06:46:48 25 4
gpt4 key购买 nike

我正在处理从电子表格导入的 pandas 中的数据框,并尝试根据其他列/行的多个条件要求创建一个新列。

到目前为止,我用来创建名为“SPOTTED”的新列的代码如下:

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'WRK'), 'No', ' ')

这会产生下图中的输出,创建“SPOTTED”列,并且仅用“No”填充该列中的行,其中“Time_Code”列中的值为“WRK”,“Work_Date”列中的行为不为空/空:

工作表上代码的当前输出:

Current Output of Code on sheet

我确实想这样做,但除了“WRK”之外,还包括“Time_Code”列下的多个类别。

当我尝试类似的操作以相同的方式定位多个“Time_Code”值并更新“SPOTTED”列时:

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'WRK'), 'No', ' ')

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'OFF'), 'No', ' ')

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'VAT'), 'No', ' ')

Python 仅执行其中一行代码并应用于数据帧,而不是应用所有三行代码来创建和更新“SPOTTED”列。

一旦完成并能够将其记录下来,我最终会尝试将数据框导出到 CSV 文件。

我将不胜感激任何帮助/见解,仍在学习 python 和 pandas 的工作方式。

谢谢!对于任何糟糕的解释,我们深表歉意。

最佳答案

您共享的用于分配多个值的代码不起作用的原因是 df['SPOTTED'] = 分配给整个列。因此,代码不断创建和覆盖同一列。

下次遇到此类问题时,请尝试在每次操作后查看 df 的内容。

<小时/>

我相信这是最惯用的解决方案。我从 @Henry Yik 那里偷了虚拟数据,希望他们不要介意。

import numpy as np
import pandas as pd

df = pd.DataFrame({'work_date': [1, 2, 3, 4, np.nan], 'time_code': ['WRK', 'OFF', 'VAT', 'BONUS', 'OT15']})

select_time_codes = ['VAT', 'WRK', 'OFF']

df.loc[df['work_date'].notna() & df['time_code'].isin(select_time_codes), 'spotted'] = 'No'

这就是 DataFrame 之后的样子:

   work_date time_code spotted
0 1.0 WRK No
1 2.0 OFF No
2 3.0 VAT No
3 4.0 BONUS NaN
4 NaN OT15 NaN

这些值被分配为字符串'No',并且NaN保持不变,等待您对可能的值及其用途进行澄清。

关于python - 根据其他行和列的多个条件在数据框中创建新列?包括空行? - python / Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187488/

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