我编写的程序通常已经完成了我希望它做的事情 - 大部分时间。添加每列的总计。我的数据框使用csv文件格式。我的代码如下:
import pandas as pd
import matplotlib.pyplot
class ColumnCalculation:
"""This houses the functions for all the column manipulation calculations"""
def max_electricity(self):
df.set_index('Date', inplace=True)
df.loc['Total'] = df.sum()
print(df)
df = pd.read_csv("2011-onwards-city-elec-consumption.csv")
ColumnCalculation.max_electricity(df)
我的数据集(我不知道如何正确格式化)
代码很好地将所有总计加到每列底部的总列中,除非它涉及到最后一列(2017)(下图):
我不确定该程序的确如此,我尝试使用不同的格式选项,例如.iloc
或.ix
,但它似乎没有什么区别。我还尝试单独添加每个列(下面):
def max_electricity(self):
df.set_index('Date', inplace=True)
df.loc['Total', '2011'] = df['2011'].sum()
df.loc['Total', '2012'] = df['2012'].sum()
df.loc['Total', '2013'] = df['2013'].sum()
df.loc['Total', '2014'] = df['2014'].sum()
df.loc['Total', '2015'] = df['2015'].sum()
df.loc['Total', '2016'] = df['2016'].sum()
df.loc['Total', '2017'] = df['2017'].sum()
print(df)
但我收到一个错误,因为我认为这会太多了?我试图想出这个好时间和一点点。
答案 0 :(得分:0)
您的最后一列未被解析为浮点数,而是字符串。
要解决此问题,请尝试在求和之前转换为数字:
import locale
locale.setlocale(locale.LC_NUMERIC, '')
df['2017'] = df['2017'].map(locale.atoi)
更好的是,尝试将数据作为数字数据读取。例如:
df = pd.read_csv('file.csv', sep='\t', thousands=',')