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

遍历日期列表创建专属Pandas DataFrame遇无输出问题求助

问题排查与解决

你的代码没有输出的核心问题出在判断条件if item in df:上——当你用item in df时,Pandas会检查这个item是不是DataFrame的列名(也就是source、time、date这三个),而不是检查date列里是否包含这个日期值。所以所有日期都不满足这个条件,循环里的筛选和打印代码根本没执行。

修正方案

你需要把判断逻辑改成检查日期是否存在于df['date']列的取值中,这里提供两种简单的实现方式:

方式1:修正判断条件

直接把if item in df:替换成if item in df['date'].values:,这样就能正确判断日期是否在DataFrame的date列里了。修正后的完整代码:

import pandas as pd
unique_dates=['12/12/2017','12/13/2017','12/14/2017']
data=[['a','8:00','12/12/2017'],['b','9:00','12/13/2017'],['c','8:30','12/12/2017'], ['b','8:05','12/14/2017'],['a','8:10','12/13/2017'],['a','8:15','12/12/2017']]
headers=['source','time','date']
df=pd.DataFrame(data,columns=headers)

for item in unique_dates:
    # 修正:检查日期是否在date列的取值集合中
    if item in df['date'].values:
        new_df=df[df['date']==item]
        print(f"--- 日期 {item} 的筛选结果 ---")
        print(new_df)
        print("\n")

方式2:省略判断(更简洁)

如果你的unique_dates里的日期都确保在df中存在,或者即使不存在也想输出空DataFrame,完全可以去掉判断步骤,直接筛选:

import pandas as pd
unique_dates=['12/12/2017','12/13/2017','12/14/2017']
data=[['a','8:00','12/12/2017'],['b','9:00','12/13/2017'],['c','8:30','12/12/2017'], ['b','8:05','12/14/2017'],['a','8:10','12/13/2017'],['a','8:15','12/12/2017']]
headers=['source','time','date']
df=pd.DataFrame(data,columns=headers)

for item in unique_dates:
    new_df=df[df['date']==item]
    print(f"--- 日期 {item} 的筛选结果 ---")
    print(new_df)
    print("\n")

预期输出

运行修正后的代码,你会得到每个日期对应的筛选结果:

--- 日期 12/12/2017 的筛选结果 ---
  source   time        date
0      a  8:00  12/12/2017
2      c  8:30  12/12/2017
5      a  8:15  12/12/2017


--- 日期 12/13/2017 的筛选结果 ---
  source   time        date
1      b  9:00  12/13/2017
4      a  8:10  12/13/2017


--- 日期 12/14/2017 的筛选结果 ---
  source   time        date
3      b  8:05  12/14/2017

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:43:20