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

如何将Pandas DataFrame中最后一条非空行写入CSV文件?

解决方法

要实现仅保留每只股票最后一条PbRatios非空的记录,核心是先过滤掉空值,再取最新日期的记录——你之前直接取最大日期的方式失效,是因为该日期对应的PbRatios恰好为空。

修改后的代码如下:

import pandas as pd
from yahooquery import Ticker

symbols = ['AAPL','GOOG','MSFT','NVDA']
header = ["asOfDate","PbRatio"]
# 第一次执行时写入表头
with open('output.csv', 'w') as f:
    f.write(','.join(header) + '\n')

for tick in symbols:
    faang = Ticker(tick)
    df = faang.valuation_measures
    if df is None or df.empty:
        continue
    
    # 确保所需列存在,不存在则设为None
    for column_name in header:
        if column_name not in df.columns:
            df.loc[:, column_name] = None
    
    # 过滤掉PbRatios为空的记录
    filtered_df = df.dropna(subset=['PbRatio'])
    if filtered_df.empty:
        continue  # 该股票无有效PbRatios记录,直接跳过
    
    # 取过滤后最新日期的记录
    latest_record = filtered_df[filtered_df.asOfDate == filtered_df.asOfDate.max()]
    
    # 追加写入csv,不写入索引列
    latest_record.to_csv('output.csv', mode='a', index=False, columns=header, header=False)

关键改动说明

  • 单独写入表头:避免循环中重复写入表头,第一次执行时创建文件并写入表头
  • 过滤空值记录:用dropna(subset=['PbRatio'])剔除PbRatios为空的行,确保后续取的最新记录是有效的
  • 增加空数据判断:补充df is None or df.empty和filtered_df.empty的判断,避免无数据时触发报错
  • 关闭索引写入:原代码index=True会把DataFrame索引写入csv,改为index=False更符合输出需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:55:19