当前位置: 首页 > 面试题库 >

pandas数据框-带有重置的运行总和

巫马刚洁
2023-03-14
问题内容

我想计算给定列中的运行总和(当然,不使用循环)。需要注意的是,我还有另一列指定何时将运行总和重置为该行中存在的值。最好通过以下示例进行说明:

   reset  val   desired_col
0      0    1   1
1      0    5   6
2      0    4   10
3      1    2   2
4      1   -1   -1
5      0    6   5
6      0    4   9
7      1    2   2

desired_col 是我要计算的值。


问题答案:

您可以使用2次cumsum()

#   reset  val  desired_col
#0      0    1            1
#1      0    5            6
#2      0    4           10
#3      1    2            2
#4      1   -1           -1
#5      0    6            5
#6      0    4            9
#7      1    2            2
df['cumsum'] = df['reset'].cumsum()
#cumulative sums of groups to column des
df['des']= df.groupby(['cumsum'])['val'].cumsum()
print df
#   reset  val  desired_col  cumsum  des
#0      0    1            1       0    1
#1      0    5            6       0    6
#2      0    4           10       0   10
#3      1    2            2       1    2
#4      1   -1           -1       2   -1
#5      0    6            5       2    5
#6      0    4            9       2    9
#7      1    2            2       3    2
#remove columns desired_col and cumsum
df = df.drop(['desired_col', 'cumsum'], axis=1)
print df
#   reset  val  des
#0      0    1    1
#1      0    5    6
#2      0    4   10
#3      1    2    2
#4      1   -1   -1
#5      0    6    5
#6      0    4    9
#7      1    2    2


 类似资料:
  • 问题内容: 我有一个数据框,类似: 我想在数据框的末尾添加一个“总计”行: 我尝试使用该命令,但最终得到一个Series,尽管可以将其转换回Dataframe,但它不维护数据类型: 我想维护原始数据帧中的数据类型,因为我需要对总行应用其他操作,例如: 问题答案: 将总计行附加到 仅当您有一列字符串或对象时,才需要进行转换。 这是一个脆弱的解决方案,因此我建议仍然坚持对数据框进行操作。例如。

  • 问题内容: 这是我的数据框,应重复5次: 我想要这样的结果: 但是必须有一种比保持追加更聪明的方法。实际上,Im正在处理的数据帧应重复50次。 我还没有发现任何实用的东西,包括类似-—的东西,但它在数据框架上不起作用。 有人可以帮忙吗? 问题答案: 您可以使用以下功能: 如果只想重复值而不是索引,则可以执行以下操作:

  • 问题内容: 我有一张桌子,上面有日期和交易记录。我需要计算运行总计(用总和划分很容易),除了当“金额”中存在负值时需要将其重置为零,然后再次开始计算运行总计。有任何想法吗? 问题答案: 使用更新变量方法,您可以使用重置选项计算运行总计。

  • 问题内容: 如果数据如下所示: 我想复制IsHoliday等于TRUE的行,我可以这样做: 但是是否有更好的方法来执行此操作,因为我需要将假日行重复5次,如果使用上述方法,则必须追加5次。 问题答案: 您可以放入列表中,然后执行以下操作:

  • 问题内容: 我有一个重复的行的DataFrame。我想获得一个具有唯一索引且没有重复项的DataFrame。可以丢弃重复的值。这可能吗?做完了吗? 问题答案: In [29]: df.drop_duplicates() Out[29]: b c 1 2 3 3 4 0 7 5 9

  • 问题内容: 我需要删除pandas中数据框的前三行。 我知道会删除最后一行,但我不知道如何删除前n行。 问题答案: 用途: 将为您提供一个没有前三行的新df。