我有一个Pandas Dataframe ,对于每组行,我需要反转单个列的顺序[重复]

ehxuflar  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(95)

此问题已在此处有答案

Pandas ---> Need an index for each group element(1个答案)
7天前关闭
当前 Dataframe 已经按A列中的组的顺序排列。C列只是1到n的序列
| 色谱柱A|B栏|色谱柱C|
| --------------|--------------|--------------|
| 第1组|x|1|
| 第1组|y|二|
| 第1组|z|三|
| 第二组|w|1|
| 第二组|x|二|
| 第二组|y|三|
| 第二组|z|四|
我需要为每个组反转列C,以便 Dataframe 看起来像这样:
| 色谱柱A|B栏|色谱柱C|
| --------------|--------------|--------------|
| 第1组|x|三|
| 第1组|y|二|
| 第1组|z|1|
| 第二组|w|四|
| 第二组|x|三|
| 第二组|y|二|
| 第二组|z|1|
我已经尝试将 Dataframe 分组,但我需要从分组的 Dataframe 返回到 Dataframe 。这可以反转C列,但我不确定如何将其返回到 Dataframe ,或者是否有方法在不分组的情况下做到这一点:

df = df.groupby('Column A', sort=False, group_keys=True).apply(lambda row: row['Column C'][::-1])
vshtjzan

vshtjzan1#

如果需要范围N1,使用GroupBy.cumcountascending=False)参数:

df['Column C'] = df.groupby('Column A').cumcount(ascending=False).add(1)

您的GroupBy.transform变更单解决方案:

df['Column C'] = df.groupby('Column A')['Column C'].transform(lambda x: x.to_numpy()[::-1])

相关问题