我对 python 比较陌生,从同事那里继承了一段代码,但我似乎无法运行。这个想法是将总计行和列添加到数据框中,但是该列的行不起作用并给出多个错误(我看到很多“回溯(最近一次调用最后)”):
csmposting = create_csm_table(csm) csmposting['TOTAL'] = csmposting.sum(axis=1) ---->This line causes the error csmposting.loc['TOTAL'] = csmposting.sum(axis=0).astype(int)
当我在没有该行的情况下运行它时,我得到(我已删除列标题):
Unit1 779 285 16 2 3
Unit2 290 20 3 3 0
Unit3 0 0 3 7 0
Unit4 547 97 8 10 0
TOTAL 1616 402 30 22 3
我尝试将该行更改为:
csmposting.loc['TOTAL1'] = csmposting.sum(axis=1)
这最终只会将其添加为表格底部的另一行,并为所有数字添加小数位:
Unit1 779.0 285.0 16.0 2.0 3.0
Unit2 290.0 20.0 3.0 3.0 0.0
Unit3 0.0 0.0 3.0 7.0 0.0
Unit4 547.0 97.0 8.0 10.0 0.0
TOTAL1 NaN NaN NaN NaN NaN
TOTAL 1616.0 402.0 30.0 22.0 3.0
任何人都可以建议如何显示总计列并保持数字格式相同吗?
谢谢!
复制粘贴代码的方式,
csmposting = create_csm_table(csm) csmposting['TOTAL'] =
csmposting.sum(axis=1) ---->This line causes the error
csmposting.loc['TOTAL'] = csmposting.sum(axis=0).astype(int)
同一行似乎有两个命令。
您能否确认
TOTAL
计算实际上在新行上,如下所示:
csmposting = create_csm_table(csm)
csmposting['TOTAL'] = csmposting.sum(axis=1) # This line causes the error
csmposting.loc['TOTAL'] = csmposting.sum(axis=0).astype(int)
除此之外,我没有发现代码有任何问题。
这是使用 Pandas 的示例代码,它重复了两个 TOTAL 计算,并且似乎工作正常。
import pandas as pd
df = pd.DataFrame(
[[779, 285, 16, 2, 3],
[290, 20, 3, 3, 0],
[0, 0, 3, 7, 0],
[547, 97, 8, 10, 0]],
index=['Unit1', 'Unit2', 'Unit3', 'Unit4'],
columns=['c1', 'c2', 'c3', 'c4', 'c5']
)
print(df) # similar to your sample data in `csmposting`
# c1 c2 c3 c4 c5
# Unit1 779 285 16 2 3
# Unit2 290 20 3 3 0
# Unit3 0 0 3 7 0
# Unit4 547 97 8 10 0
df['TOTAL'] = df.sum(axis=1)
df.loc['TOTAL'] = df.sum(axis=0)
print(df)
# c1 c2 c3 c4 c5 TOTAL
# Unit1 779 285 16 2 3 2170
# Unit2 290 20 3 3 0 632
# Unit3 0 0 3 7 0 20
# Unit4 547 97 8 10 0 1324
# TOTAL 3232 804 60 44 6 8292
请告诉我们更多您遇到的错误。 看看也可能有帮助
csmposting.index
和 csmposting.columns
和 csmposting.isna()
检查缺失值。