Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果两个pandas列值的差值大于pandas中的某个列值,则将该差值添加到新行_Python_Pandas_Pandas Groupby - Fatal编程技术网

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