簡體   English   中英

如果字典的任何值與 pandas dataframe python 中的條件匹配,則獲取數據

[英]Get data if any value of a dictionary matches a condition in pandas dataframe python

如果 UPS_HEAD 或 UPS_DRV < 95,我想返回 q_start 列的值

我有以下 Dataframe:

rows_list = [{'q_end': '2022-06-24 15:00:00', 'q_start': '2022-06-24 15:59:59', 'summary': {'UPS_HEAD': 84, 'UPS_DRV': 84, 'ALLOW_AP': 18 }},
{'q_end': '2022-06-24 14:00:00', 'q_start': '2022-06-24 14:59:59', 'summary': {'UPS_HEAD': 95, 'UPS_DRV': 95, 'ALLOW_AP': 18 }},
{'q_end': '2022-06-24 13:00:00', 'q_start': '2022-06-24 13:59:59', 'summary': {'UPS_HEAD': 91, 'UPS_DRV': 91, 'ALLOW_AP': 18 }}]
df = pd.DataFrame(rows_list)

output 應該是這樣的:

output = [2022-06-24 15:00:00, 2022-06-24 13:00:00]

假設“summary”是一系列字典,使用str訪問器和boolean 索引

m1 = df['summary'].str['UPS_HEAD'].lt(95)
m2 = df['summary'].str['UPS_DRV'].lt(95)

out = df.loc[m1|m2, 'q_start'].to_list()

如果要檢查的列多於 2 列,更好的方法可能是:

cols = ['UPS_HEAD', 'UPS_DRV']
m = pd.json_normalize(df['summary'])[cols].lt(95).any(1)

out = df.loc[m, 'q_start'].to_list()

output: ['2022-06-24 15:00:00', '2022-06-24 13:00:00']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM