1
我想颠倒我的数据框中的列值,但只能在单个“groupby”级别上颠倒。下面你可以找到一个最小的示范例子,在这里我要属于同一字母A到“翻转”的价值观,B或C:Pandas反向列值组
df = pd.DataFrame({"group":["A","A","A","B","B","B","B","C","C"],
"value": [1,3,2,4,4,2,3,2,5]})
group value
0 A 1
1 A 3
2 A 2
3 B 4
4 B 4
5 B 2
6 B 3
7 C 2
8 C 5
我期望的输出结果如下:(列被添加,而不是取代只为简洁的目的)
group value value_desired
0 A 1 2
1 A 3 3
2 A 2 1
3 B 4 3
4 B 4 2
5 B 2 4
6 B 3 4
7 C 2 5
8 C 5 2
与往常一样,我没有看到一个适当的矢量风格的做法,我结束与循环搞乱只是为了最终输出的缘故,但我当前的代码伤害我非常太多:
for i in list(set(df["group"].values.tolist())):
reversed_group = df.loc[df["group"]==i,"value"].values.tolist()[::-1]
df.loc[df["group"]==i,"value_desired"] = reversed_group
个
熊猫大师,请告诉我的方式:)
谢谢!变形为救援!我碰巧知道 - 你可以如此善良,并向我展示应用风格的方法,因为我有一些麻烦区分两者... –
'df.groupby('group')['value']。apply (lambda x:x [:: - 1])'? – Zero
这只适用于我,如果我加了'values'和这一行的结尾。否则,我会引发错误'TypeError:插入的列与帧索引不兼容的索引。看起来像原始索引变换返回系列,应用返回multindex ...谢谢反正! –