我正在为数据集编写一些函数,并且我想知道是否存在一种方法来编写这些函数,以使它们在多个数据集上工作,其中列可能具有不同的名称。
def calc(df):
a = df.groupby(['Region', 'Year'], as_index=False)["Sales"].sum()
print(a.to_string(index=False))
该功能可以正常工作,因为我指定了列名。反正有做这样的事情吗?
def calc(df, x1, x2, x3):
a = df.groupby([x1, x2], as_index=False)[x3].sum()
print(a.to_string(index=False))
然后像这样输入值:
if __name__ == "__main__":
report2(df, df['Region'], df['Year'], df["Sales"])
当我尝试执行此操作时,我总是会收到错误消息:
Traceback (most recent call last):
File "sales_record.py", line 60, in <module>
calc(df, df['Region'], df['Year'], df["Sales"])
File "sales_record.py", line 54, in calc
answer = df.groupby([x1, x2], as_index=False)[x3].sum()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\base.py", line 265, in __getitem__
.format(missing=str(bad_keys)[1:-1]))
KeyError: 'Columns not found: 7200, 22500, 82500, 1800, 45000, 9000, 99000, 18000, 22000, 8400, 110000, 16500, 54000, 112500, 3000'
任何帮助将不胜感激。
答案 0 :(得分:1)
最简单的呼叫columns names
:
calc(df, 'Region', 'Year', "Sales")
您的解决方案应该进行一些更改-也可以通过Series代替DaatFrame
-检查this-也称为语法糖:
def calc1(x1, x2, x3):
a = x3.groupby([x1, x2], as_index=False).sum()
print(a.to_string(index=False))
calc1(df['Region'], df['Year'], df["Sales"])