You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将包含指定DateTime值的DataFrame行追加到列表中

问题原因

你的代码判断逻辑存在错误:if '16.06.2019 15:00' in ID_df.StartDateTime.values是判断当前AudioMothID对应的所有数据中是否存在目标时间,只要存在,该ID下遍历到的每一行都会触发添加条件,因此会把该ID的所有行都追加到列表中,而非仅匹配时间的行。

解决方案

推荐优先使用Pandas原生的布尔索引实现,无需嵌套循环,执行效率更高:

import pandas as pd

df = pd.read_csv('Layer1.csv')
# 生成目标ID列表
AudioMothIDs = getID()
AudioMothIDs.remove('NA')
# 定义目标时间,若StartDateTime为datetime类型需同步转换格式
target_time = '16.06.2019 15:00'
# 同时匹配ID范围和时间条件
filter_df = df[(df['AudioMothID'].isin(AudioMothIDs)) & (df['StartDateTime'] == target_time)]
# 提取指定列转为嵌套列表
orig_list = filter_df[['AudioMothID', 'StartDateTime']].values.tolist()

print(orig_list)

如果需要保留你原有的遍历写法,只需修改判断条件为校验当前行的时间值即可:
把原代码中if '16.06.2019 15:00' in ID_df.StartDateTime.values:替换为if rows['StartDateTime'] == '16.06.2019 15:00':

注意事项

如果你的StartDateTime列已经被解析为datetime格式而非字符串,需要把目标时间也转换为同格式的datetime对象再做匹配,示例:
target_time = pd.to_datetime('16.06.2019 15:00', format='%d.%m.%Y %H:%M')

内容的提问来源于stack exchange,提问作者user16889406

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:15:02