首页 > 解决方案 > 在返回空白结果的 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)

Python

标签: pythonpandas

解决方案


这是因为 df.iloc[0,4] 是 NaN(如果你看到你的表是空的),因此 df.iloc[0,6] 也将是 NaN。

由于第 6 列(余额)的以下行依赖于前一行,因此所有值最终都是 NaN。

最后,您正在执行df = df.fillna(''),用空格替换 NaN,因此整个列都有空格。


推荐阅读