Python 组内行之间的差异

Python 组内行之间的差异,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,数据帧: col1 col2 a 50 b 40 a 40 a 30 b 20 a 20 b 30 b 50 我需要根据col1对它们进行分组,并根据col2对每个组进行从高到低的排序 并找出组中连续行之间的差异。 日期框: col1 col_entity col2 diff a a1 50 10 b a2 40

数据帧:

col1   col2
a       50
b       40
a       40
a       30
b       20
a       20
b       30
b       50
我需要根据col1对它们进行分组,并根据col2对每个组进行从高到低的排序 并找出组中连续行之间的差异。 日期框:

col1  col_entity col2   diff   
a        a1       50     10     
b        a2       40     10     
a        a3       30     10    
a        a4       20     nan    
b        b1       40     10     
a        b4       50     10     
b        b3       30     10     
b        b2       20     nan 
请帮我做这个 提前感谢

看看这是否有帮助:

#replaces any value that contains a string value, with a 0
df['col2'] = pd.to_numeric(df.col2, errors='coerce').fillna(0)
#sorts the column in ascending first and calculates the difference 
df['diff']=df.sort_values(['col1','col2'],ascending=[1,1]).groupby('col1').diff()
#display the dataframe after sorting col1 in asc and col2 in desc
df.sort_values(['col1','col2'],ascending=[1,0])
输出:


您可以使用assign和groupby col1,然后使用diff计算差异

(
    df
    .assign(diff = lambda x: x.groupby('col1').diff())
    .sort_values(['col1','col2'],ascending=False)
)

您的预期结果是什么?在将答案发布到原始问题后,请不要更改您的问题。如果你想回答另一个问题,你可以在另一篇帖子中回答。@MichaelSzczesny我为同样的问题道歉我是新来这里发帖的,下次发帖后会再发帖谢谢你先生,你的答案很好,但我已更改编辑了问题,我收到错误类型错误:不支持的操作数类型-:“str”和“str”