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 ...謝謝反正! –