我想在我的資料框中添加一列(具有重復值),其中包含前一組的名稱(浮動和可排序)。任何的想法?
前:
| 團體 | 價值 |
|---|---|
| 1.1 | 值1 |
| 1.1 | 值2 |
| 1.1 | 值3 |
| 1.1 | 值3 |
| 1.2 | 值4 |
| 1.2 | 值4 |
| 1.2 | 值5 |
后:
| 團體 | 價值 | 上一組 |
|---|---|---|
| 1.1 | 值1 | 南 |
| 1.1 | 值2 | 值1 |
| 1.1 | 值3 | 值2 |
| 1.1 | 值3 | 值2 |
| 1.2 | 值4 | 南 |
| 1.2 | 值4 | 南 |
| 1.2 | 值5 | 值4 |
uj5u.com熱心網友回復:
你可以用groupby與shift這些移動各組的第1組的地方:
df['Previous Group'] = df.groupby("value")['Group'].shift()
print(df)
Group value Previous Group
0 1.1 value1 NaN
1 1.1 value2 NaN
2 1.2 value1 1.1
3 1.2 value2 1.1
編輯:
我們可以使用帶有 groupby ngroup 的輔助列,然后將其用作映射列并過濾掉 rank = 1:
a = df.assign(helper=df.groupby(["Group","value"]).ngroup())
rnk = a.groupby("Group")['helper'].rank(method='dense')
df['Previous Group'] = (a['helper'].sub(1).map(dict(zip(a['helper'],a['value'])))
.mask(rnk.eq(1)))
print(df)
Group value Previous Group
0 1.1 value1 NaN
1 1.1 value2 value1
2 1.1 value3 value2
3 1.1 value3 value2
4 1.2 value4 NaN
5 1.2 value4 NaN
6 1.2 value5 value4
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/381282.html
