python - 如何使用 python 或 pandas 根据由字典列表组成的列来过滤 DataFrame?

标签 python pandas list dictionary datetime

我有一个 DataFrame,其中一列是字典列表。我需要对包含字典列表的列应用条件并获取 bool 值。该条件包括日期时间格式。

lastDate = pd.to_datetime(date.today().replace(day=1) - timedelta(1))

Output is: Timestamp('2020-10-31 00:00:00')

数据框,

ID    Name     Status
1     Rav      [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 10, 30, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 10, 30, 2, 55, 52, 120000)}]
2     Suv      [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
3     Tim      [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
4     Jaq      [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
5     Tan      [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 10, 30, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 10, 30, 2, 55, 52, 120000)}]
If the status = "REG_COMPLETED" and Date <= lastDate, THEN True else False

所需的输出,

ID    Name     Status
1     Rav      True
2     Suv      False
3     Tim      False
4     Jaq      False
5     Tan      True

我尝试了这个,但给了我一个空的 DataFrame,

df[df['status'].apply(lambda x: x[0]['Status']=='REG_COMPLETED' and x[0]['Date']<=lastDate)]

最佳答案

使用列表理解来获取 Date如果status匹配条件,比较并测试是否至少有一个True通过any :

f = lambda x: any(y['Date'] <= lastDate for y in x if y['status']=='REG_COMPLETED')
df['Status'] = df['Status'].apply(f)
print (df)
   ID Name  Status
0   1  Rav    True
1   2  Suv   False
2   3  Tim   False
3   4  Jaq   False
4   5  Tan    True

关于python - 如何使用 python 或 pandas 根据由字典列表组成的列来过滤 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64658604/

相关文章:

python - 根据特定颜色裁剪图像

python - 我可以将数据框导出到 Excel 作为第一个工作表吗?

python - Pandas - 合并具有连续间隔的行

python - 当我在 Pandas 中使用 df.corr 时,我的一些专栏丢失了

java - 如何在列表中的另一个项目之后添加一个项目?

python - 从 google cloud dataproc python notebook 运行 .py 文件

python - 在 Python 中,是 read() 还是 readlines() 更快?

python - 如何从 python 中 pandas 数据帧创建的系列中检索值

sharepoint - 如何默认为数据 TableView

python - 子列表的唯一元素取决于子列表中的特定值