python - 在返回空白结果的 Pandas 数据框中进行迭代,不确定为什么?
问题描述
以下内容不执行计算并返回结果,而是将 Balance 列留空。谁能明白为什么?
df = pd.read_sql_query("SELECT * FROM "+n+" ORDER BY Date", conn)
df = df.replace('None', '')
df["DR"] = pd.to_numeric(df["DR"])
df["CR"] = pd.to_numeric(df["CR"])
df["Balance"] = ''
i = 0
df.iloc[i,6] = df.iloc[i,3]-df.iloc[i,4]
for i in range(1,df.shape[0]):
df.iloc[i,6] = df.iloc[i-1,6]+df.iloc[i,3]-df.iloc[i,4]
df = df.fillna('')
html = df.to_html(header=True,classes="table table-sm table-hover",justify="center",index=False)
解决方案
这是因为 df.iloc[0,4] 是 NaN(如果你看到你的表是空的),因此 df.iloc[0,6] 也将是 NaN。
由于第 6 列(余额)的以下行依赖于前一行,因此所有值最终都是 NaN。
最后,您正在执行df = df.fillna(''),用空格替换 NaN,因此整个列都有空格。
推荐阅读
- java - Springboot中@PreAuthorise的Junit测试用例
- python - 如何通过按下没有硒的按钮重定向到另一个页面?
- markdown - 如何在 Markdown 中从同一位置引用 2 个(或更多)脚注
- oracle - Toad 是否可以用于 Oracle 自动会话重新连接?
- testing - TestCafe - 当测试并行运行时混淆了屏幕截图
- javascript - 如何从 JavaScript 中的 API 更新页面以进行下一次搜索?
- angular - 如何在与 y 轴平行的直线下方直接显示 Angular 中剑道图表的 x 轴标签?
- ruby-on-rails - 成功验证用户名和密码后,doorkeeper gem 给出“invalid_client”
- regex - Logstash grok 模式提取字符串的一部分以开头和结尾
- php - 向 WooCommerce 单品页面添加多个元字段