【发布时间】:2019-10-10 16:23:34
【问题描述】:
我有一个数据框。我想为每个人创建一个唯一的 ID 号,并根据人员和日期(每周)创建一个列。
import pandas as pd
df = pd.DataFrame({ 'name':['one','one','two','two','two','three','four'],
'date':['2019-05-01','2019-05-08','2019-05-01','2019-05-08','2019-05-15','2019-05-01','2019-05-15'],
"a":range(7)})
df['date'] = pd.to_datetime(df['date'],yearfirst=True)
df = df.sort_values(['name','date'])
print(df)
这是数据:
name date a
6 four 2019-05-15 6
0 one 2019-05-01 0
1 one 2019-05-08 1
5 three 2019-05-01 5
2 two 2019-05-01 2
3 two 2019-05-08 3
4 two 2019-05-15 4
预期结果是
name date a id week
6 four 2019-05-15 6 1 3
0 one 2019-05-01 0 2 1
1 one 2019-05-08 1 2 2
5 three 2019-05-01 5 3 1
2 two 2019-05-01 2 4 1
3 two 2019-05-08 3 4 2
4 two 2019-05-15 4 4 3
如何获得“id”和“week”? 谢谢!
【问题讨论】:
-
请提出两个单独的问题,因为每列必须独立生成。
-
获取“id”的方法如下:stackoverflow.com/questions/15072626/…
-
您还没有解释“周”的含义,但我假设您指的是该日期的运行周。试试
np.ceil(df.date.dt.day / 7)。 -
谢谢!下次我会分开提问。而“周”的意思正是我的意思。