Python 如果两个pandas列值的差值大于pandas中的某个列值,则将该差值添加到新行
''' 这是我拥有的数据样本 ''' 预期产量Python 如果两个pandas列值的差值大于pandas中的某个列值,则将该差值添加到新行,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,''' 这是我拥有的数据样本 ''' 预期产量 PERIOD GROUP USER_COUNT REGION 50 A 50 AX 50 A 5 AX 25 A 20 AX 30 B 30 BY 30 B 3 BY 40 C 10 CZ 使用: 我们能知道@sk01做这件事的原
PERIOD GROUP USER_COUNT REGION
50 A 50 AX
50 A 5 AX
25 A 20 AX
30 B 30 BY
30 B 3 BY
40 C 10 CZ
使用:
我们能知道@sk01做这件事的原因吗?@毗湿奴。。我正在处理一个数据集,在这个数据集中,我应该识别两列之间的差异,并将差异分配给如上所述的新列。。这是一个我已经开始工作的实时用例,我正在检查特定组下特定时段的订阅者数量,以及是否有层次结构级别来实现这一点。。喜欢首先是分组,然后是分组。。然后是集群等等。。我已按类别对原始数据集进行分组,直到获得任何超过一个周期的计数。。然后再将计数分成两类,并提出建议。你刚才说的@sk01对我来说毫无意义。我只是想知道为什么我们需要新的一排?@Vishnudev。。我知道这听起来真的很。。在这一特定步骤之后。。我需要在下一个继承人级别对剩余值进行分组,以此类推,以查看可以形成多少组/组合。。解释一下,继续做类似的手术有点难,也很麻烦。。但是我现在想不出另外一种方法。它起作用了,但是在某些地方val1被difference@sk01-是否可以更具体一些?我没有实际数据,只处理样本数据。val1和val2之间的差异(假设第一行为5,现在在连续行的val1下添加了5…)@sk01-是否可以更改数据样本以查看它?因为现在像你需要的那样工作抱歉没有得到你。,。你想让我编辑我的问题吗?
PERIOD GROUP USER_COUNT REGION
50 A 50 AX
50 A 5 AX
25 A 20 AX
30 B 30 BY
30 B 3 BY
40 C 10 CZ
#get difference of columns
s = df['USER_COUNT'].sub(df['PERIOD'])
#mask for positive subtract values
m = s > 0
#subtract of original data ony matched rows of column VAL2
df1 = df.assign(USER_COUNT = lambda x: x['USER_COUNT'].sub(s[m], fill_value=0))
#overwrite matched rows
df2 = df[m].assign(USER_COUNT = s[m])
#join together and sorting by only stable sorting - mergesort
df3 = (pd.concat([df1, df2])
.sort_index(kind='mergesort')
.reset_index(drop=True)
.astype(df.dtypes))
print (df3)
PERIOD GROUP USER_COUNT REGION
0 50 A 50 AX
1 50 A 5 AX
2 25 A 20 AX
3 30 B 30 BY
4 30 B 3 BY
5 40 C 10 CZ