我有一個帶有一些 id 和一些日期的資料框。我希望能夠通過日期更改對 id 進行分組,以創建一個通用的“grouping_variable”。在 r 我會這樣做:
df <- tibble(id = c(rep("1", 4), rep("2", 4), rep("3", 4)),
dates = as_date(c('2022-02-07', '2022-02-07', '2022-02-08', '2022-02-08',
'2022-02-09', '2022-02-09', '2022-02-10', '2022-02-10',
'2022-02-11', '2022-02-11', '2022-02-11', '2022-02-11')))
df <- df %>% group_by(id) %>% mutate(grouping_var = match(dates, unique(dates)))
基本上,此代碼按 id 分組,然后在組內,為每個唯一日期分配一個值,然后將值與實際日期連接起來,從而產生一個包含這些值的列:1 1 2 2 1 1 2 2 1 1 1 1
在 Python/pandas 中,我找不到匹配函式的等價物。有誰知道這是怎么做到的嗎?
以下是 Python 中的一些示例資料:
d = {'user' : ["1", "1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3"],
'dates' : ['2022-02-07', '2022-02-07', '2022-02-08', '2022-02-08',
'2022-02-09', '2022-02-09', '2022-02-10', '2022-02-10',
'2022-02-11', '2022-02-11', '2022-02-11', '2022-02-11'],
'hoped_for_output' : [1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1]}
example_df = pd.DataFrame(data = d)
非常感謝!
uj5u.com熱心網友回復:
我們可以factorize
在按“用戶”分組后使用
d['hoped_for_output'] = d.groupby(['user'])['dates'].transform(lambda x: pd.factorize(x)[0]) 1
-輸出
d
user dates hoped_for_output
0 1 2022-02-07 1
1 1 2022-02-07 1
2 1 2022-02-08 2
3 1 2022-02-08 2
4 2 2022-02-09 1
5 2 2022-02-09 1
6 2 2022-02-10 2
7 2 2022-02-10 2
8 3 2022-02-11 1
9 3 2022-02-11 1
10 3 2022-02-11 1
11 3 2022-02-11 1
資料
d = pd.DataFrame(d)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460978.html
上一篇:將閃亮的選擇添加到可以匯出的表中