我试图捕捉"跑步"给定一系列期间金额的累计金额。
参见示例:
df = df[1:4].cumsum() # this doesn't return the desired result
答案 0 :(得分:3)
您希望axis=1
对各行进行求和。
df.cumsum(axis=1)
侧注 - 默认情况下执行[1:4]
切片行(即numpy或类似列表的语义)。如果要按标签选择列,请使用df.loc[:, 1:4]
答案 1 :(得分:2)
您正在寻找axis
参数。许多Pandas函数使用此参数来跨列或跨行应用操作。使用axis=0
逐行应用,axis=1
按列应用。此操作实际上是遍历列,因此您需要axis=1
。
df.cumsum(axis=1)
本身适用于您的示例以生成输出表。
In [3]: df.cumsum(axis=1)
Out[3]:
1 2 3 4
10 16 30 41 61
51 13 29 40 50
13 11 30 45 61
321 12 27 37 52
我怀疑你对限制特定范围的列很感兴趣。为此,您可以将.loc
与列标签(我的字符串)一起使用。
In [4]: df.loc[:, '2':'3'].cumsum(axis=1)
Out[4]:
2 3
10 14 25
51 16 27
13 19 34
321 15 25
.loc
是基于标签的,包含边界。如果您想了解有关Pandas索引的更多信息,请查看docs。