首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用python生成id号?

如何用python生成id号?
EN

Stack Overflow用户
提问于 2019-05-24 13:25:17
回答 2查看 57关注 0票数 1

我有一个数据框架。我想为每个人创建一个唯一的ID号,并基于person和date(每周)创建一个列。

代码语言:javascript
运行
复制
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)

以下是数据:

代码语言:javascript
运行
复制
    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

预期结果为

代码语言:javascript
运行
复制
    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"?谢谢!

EN

Stack Overflow用户

发布于 2019-05-24 13:45:58

我使用cumsum获取df['id'],在df.date上使用groupby获取df['week']

代码语言:javascript
运行
复制
df['id'] = df.name.ne(df.name.shift()).cumsum()
df['week'] = df.date.groupby(df.date).ngroup() + 1


Out[408]:
    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
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56286315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档