gpt4 book ai didi

python - 仅在同一行索引内应用函数?

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

我有一个包含 2 个排序索引的数据框,我想按 col2 排序的顺序仅在 col1 内的列上应用 diff .

mini_df = pd.DataFrame({'col1': ['A', 'B', 'C', 'A'], 'col2': [1,2,3,4],  'col3': [1,4,7,3]})
mini_df = mini_df.set_index(['col1', 'col2']).sort_index()
mini_df['diff'] = mini_df.col3.diff(1)

这给了我

              col3    diff
col1 col2
__________________________
A 1 1 nan
4 3 2
B 2 4 1
C 3 7 3

上面它按行应用diff。我想要的是

              col3    diff
col1 col2
__________________________
A 1 1 nan
4 3 2
B 2 4 nan
C 3 7 nan

最佳答案

您需要使用 groupbydiff 应用于每个组:

mini_df = pd.DataFrame({'col1': ['A', 'B', 'C', 'A'], 'col2': [1,2,3,4],  'col3': [1,4,7,3]})
mini_df = mini_df.set_index(['col1', 'col2']).sort_index()

mini_df['diff'] = mini_df.groupby(axis=0, level='col1')['col3'].diff()

关于python - 仅在同一行索引内应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995547/

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