过滤数据帧子集的更有效方法

时间:2020-11-03 23:23:01

标签: python pandas dataframe filtering subset

问题是这样,我有一个像这样的数据框:

A B C D
2 3 X 5
7 2 5 7
1 2 7 9
3 4 X 9
1 2 3 5
6 3 X 8

我希望遍历数据帧的行,并且每次C = X列都想重置一个计数器,并开始将B列中的值相加直到C = X列。然后洗净然后重复排直到完成。

当前,我正在使用.iterrows()遍历各行,比较C列,然后按程序添加到变量中。

我希望有一种更有效的类似“熊猫”的方法来做这样的事情。

1 个答案:

答案 0 :(得分:0)

按如下所述使用cumsum()

import pandas as pd
df = pd.DataFrame({"B":[3, 2, 2, 4, 2, 3],
                  "C":["X", 5, 7, "X", 3, "X"]})

df['C'].loc[df['C'] == "X"] = df['B'].loc[df['C'] == "X"].cumsum()

输出为

    B   C
0   3   3
1   2   5
2   2   7
3   4   7
4   2   3
5   3   10
相关问题