gpt4 book ai didi

python - PANDAS 依赖条件

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:44 25 4
gpt4 key购买 nike

我正在尝试使用“groupby”将条件变化制成表格,但感到困惑,并希望得到任何指导。我有一个数据框如下:

SUBJECT    TYPE
1 1
1 2
1 2
2 1
2 1
3 1
3 3
3 5

我想生成一个报表,将任何积极的变化制成表格,忽略任何消极的变化,并生成每个主题的变化计数。例如,上面的输出将是:

Subject    TYPE
1 1
2 0
3 2

我是否需要使用 pandas 创建一个 if/else 子句,或者是否有更简单的方法来使用 Summit 来实现此目的?也许像...

def tabchange(type, subject):
current_subject = subject[0]
type_diff = type - type
j = 1
for i in range(1,len(type)):
type_diff[i] = type[i] - type[i-j]
if subject[i] == current_subject:
if type_diff[i] > 0:
new_row = 1
j += 1
else:
j = 1
else:
new_row[i] = 0
current_subject = subject[i]
return new_row

最佳答案

import pandas as pd
df = pd.DataFrame({'SUBJECT': [1, 1, 1, 2, 2, 3, 3, 3],
'TYPE': [1, 2, 2, 1, 1, 1, 3, 5]})
grouped = df.groupby('SUBJECT')
df['TYPE'] = grouped['TYPE'].diff() > 0
result = grouped['TYPE'].agg('sum')

产量

SUBJECT
1 1.0
2 0.0
3 2.0
Name: TYPE, dtype: float64
<小时/>

上面,dfSUBJECT 分组,差异取自 TYPE 列:

In [253]: grouped = df.groupby('SUBJECT'); df['TYPE'] = grouped['TYPE'].diff() > 0 

In [254]: df
Out[254]:
SUBJECT TYPE
0 1 False
1 1 True
2 1 False
3 2 False
4 2 False
5 3 False
6 3 True
7 3 True

然后,再次按SUBJECT分组,通过统计TYPE列中True的数量得到结果:

In [255]: result = grouped['TYPE'].agg('sum'); result
Out[255]:
SUBJECT
1 1.0
2 0.0
3 2.0
Name: TYPE, dtype: float64

关于python - PANDAS 依赖条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com