[英]Get first column value in Pandas DataFrame where row matches condition
[英]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.